如何将连接查询映射到JPA中的非实体类?

时间:2011-02-17 02:42:48

标签: java hibernate jpa

在休眠中

可以使用非实体类映射连接查询。 How to map a database query into an Object [in Java]?

<class name=... select="select A.field_a, B.field_b, ... from A, B, ...">

如何在JPA / Hibernate中实现相同的功能?

1 个答案:

答案 0 :(得分:6)

在hibernate中,您可以在查询的select子句中调用任意类的构造函数。

@NamedQuery( name = "myScalarQuery" query =
"select new org.stackoverflow.hibernate.QueryResultObject(A.field_a, B.field_b) 
  from A, B
  where a.someUsefulProperty = b.someComparableProperty")

等。 (注意需要完全限定的类名)

然后你只需要具有匹配构造函数的类

public class QueryResultObject {

public QueryResultObject(TypeOfFieldA fieldA, TypeOfFieldB fieldB) {
//etc
}

}