@EntityGraph 注释无法正常工作?

时间:2021-05-10 16:08:00

标签: spring-boot hibernate jpa spring-data-jpa entitygraph

我需要通过遵循不同的 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

1 个答案:

答案 0 :(得分:0)

Spring Data 根本不知道这个注解,因为该方法不是抽象的。您应该能够像这样声明方法:

@EntityGraph(attributePaths = {"dbpBspMetaCollection","dbpBspMetaCollection.dbpBspMetaCustomFieldCollection","dbpBspMetaCollection.bspType","dbpBspMetaCollection.bankCode","dbpBspMetaCollection.dbpBspMetaCustomFieldCollection.fieldType"}, type = EntityGraph.EntityGraphType.FETCH)
List<DbpMetaBspCategory> findAllCategories();