我需要通过遵循不同的 EntityGraphs 注释为同一个 findAll()
方法实现两种不同的实现。通过引用另一篇 StackOverflow 帖子,我找到了一种使用不同 EntityGrpah 实现相同 findAll()
方法的方法。但是当我使用该帖子中提到的默认方法时,我没有得到预期的行为。它忽略 @EntityGraph
注释并按照默认行为返回惰性集合。
请提供此问题的修复程序,或说明我可以实施的任何其他更好的解决方案来解决此问题。
public interface BspCategoryRepository extends JpaRepository<DbpMetaBspCategory, String> {
@EntityGraph(attributePaths = {"dbpBspMetaCollection","dbpBspMetaCollection.dbpBspMetaCustomFieldCollection","dbpBspMetaCollection.bspType","dbpBspMetaCollection.bankCode","dbpBspMetaCollection.dbpBspMetaCustomFieldCollection.fieldType"}, type = EntityGraph.EntityGraphType.FETCH)
default List<DbpMetaBspCategory> findAllCategories(){
return findAll();
}
}
请参考 Femi 回复的帖子中的第二个答案。 References
答案 0 :(得分:0)
Spring Data 根本不知道这个注解,因为该方法不是抽象的。您应该能够像这样声明方法:
@EntityGraph(attributePaths = {"dbpBspMetaCollection","dbpBspMetaCollection.dbpBspMetaCustomFieldCollection","dbpBspMetaCollection.bspType","dbpBspMetaCollection.bankCode","dbpBspMetaCollection.dbpBspMetaCustomFieldCollection.fieldType"}, type = EntityGraph.EntityGraphType.FETCH)
List<DbpMetaBspCategory> findAllCategories();