我正在尝试转换以下查询:
Query query = entityManager.createQuery("from TestEntity te " +
"join fetch te.someEntity se " +
"left join fetch te.someEntity2 se2 "
"left join fetch se2.someEntity3 " +
"where se.predicateHere =:prediacte");
进入Criteria Hibernate Query,但肯定丢失了一些东西,因为我遇到以下错误:
query specified join fetching, but the owner of the fetched association was not present in the select list
当我尝试这样做时:
Root<TestEntity> testEntityRoot = criteria.from(TestEntity.class);
testEntityRoot.fetch(TestEntity_.someEntity, JoinType.INNER);
testEntityRoot.fetch(TestEntity_.someEntity2, JoinType.LEFT).fetch(SomeEntity2.someEntity3, JoinType.LEFT);
很抱歉,表/列的命名是敏感数据。
答案 0 :(得分:0)
我最终使用相同的查询解决了这个问题:
Root<TestEntity> testEntityRoot = criteria.from(TestEntity.class);
testEntityRoot.fetch(TestEntity_.someEntity, JoinType.INNER);
testEntityRoot.fetch(TestEntity_.someEntity2, JoinType.LEFT).fetch(SomeEntity2.someEntity3, JoinType.LEFT);
除非我以错误的顺序获取实体。
首先,我们需要获取根实体,然后将所有获取链接起来以获取所需的实体。