【问题标题】:How to map join query to non-entity class in JPA?如何将连接查询映射到 JPA 中的非实体类?
【发布时间】:2011-06-28 19:32:06
【问题描述】:

在休眠中

连接查询可以映射到非实体类。 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 中实现相同的功能?

【问题讨论】:

    标签: java hibernate jpa


    【解决方案1】:

    在 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
    }
    
    }
    

    【讨论】:

    • 应该注意,这个constructor expression 通常是 JPA 的一个特性(当 JPA 从 EJB 规范中分离出来时,可以追溯到 Java EE 5)。您没有必须使用 Hibernate 来使用此功能。
    • 另外,这仅适用于 JPQL 查询,不适用于本机查询
    猜你喜欢
    • 2011-06-24
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 2019-10-28
    • 2015-05-18
    • 2019-02-25
    • 2023-03-18
    • 2013-01-22
    相关资源
    最近更新 更多