我有课程树:
classA { classB b; classC c; ..... }
我有这样的HQL查询:
SELECT a.field1, b.field2, c.field3, c.field4 FROM a LEFT OUTER JOIN b ON a.id = b.fk LEFT OUTER JOIN c ON b.id = c.fk
此查询返回List<Object[]>。
List<Object[]>
是否可以将返回的数据强制转换为以下类:
classD { Type1 fiedl1; Type2 field2; Type3 field3; }
那么Hibernate可以进行铸造吗?还是我需要手动进行所有铸造?
JPA查询中有不同类型的选择。 您当前正在使用Array作为返回类型,您需要的是Construct返回类型。 这是实现此目的的方法:
String queryStr = "select NEW package.YourDefinedCustomClass( a.field1, b.field2, c.field3, c.field4) from a left outer join b on a.id=b.fk left outer join c on b.id=c.fk"; TypedQuery<YourDefinedCustomClass> query = em.createQuery(queryStr, YourDefinedCustomClass.class); List<YourDefinedCustomClass> results = query.getResultList();
基本上有两件事:
阅读有关JPA2查询中选择的更多信息。