如何返回对象类型而不是List< Object []>在hibernate? [英] How to return object type instead of List<Object[]> in hibernate?

查看:155
本文介绍了如何返回对象类型而不是List< Object []>在hibernate?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有类树:

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。可以使用hibernate来投射

This query returns List. Does it possible to cast using hibernate to e.g.

classD {
  Type1 fiedl1;
  Type2 field2;
  Type3 field3;
}

所以铸造将由hibernate或需要手动做所有铸造?
谢谢。

so casting will be made by hibernate or need manually do all casting? Thanks.

推荐答案

JPA查询中有不同类型的选择。 您目前正在使用Array作为返回类型,您需要的是构造返回类型。以下是如何实现此功能:

There are different types of selects in JPA queries. You are currently using Array as a return type, what you need is Construct return type. Here is how to achieve this:

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();

基本上有两件事:


  1. 自定义类必须是您的结果返回类型

  2. 自定义类必须有一个构造函数, / li>
  1. Custom class must be your results return type
  2. Custom class must have a constructor which takes result values you define in query string.

详细了解JPA2查询中的选择。

这篇关于如何返回对象类型而不是List&lt; Object []&gt;在hibernate?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆