use*_*430 10 java hibernate casting hql
我有课程树:
classA {
classB b;
classC c;
.....
}
Run Code Online (Sandbox Code Playgroud)
我有这样的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
Run Code Online (Sandbox Code Playgroud)
此查询返回List<Object[]>.
是否可以将返回的数据强制转换为以下类:
classD {
Type1 fiedl1;
Type2 field2;
Type3 field3;
}
Run Code Online (Sandbox Code Playgroud)
那么可以通过Hibernate进行转换,还是我需要手动完成所有的转换?
JMe*_*nik 26
JPA查询中有不同类型的选择.您当前正在使用Array作为返回类型,您需要的是构造返回类型.以下是如何实现这一目标:
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();
Run Code Online (Sandbox Code Playgroud)
基本上有两件事: