Hibernate 当使用2个实体和group by的AGRAGATE函数时,如何处理JPA中的TypedQuery?

Hibernate 当使用2个实体和group by的AGRAGATE函数时,如何处理JPA中的TypedQuery?,hibernate,jpa,hql,jpa-2.0,jpql,Hibernate,Jpa,Hql,Jpa 2.0,Jpql,到目前为止,我选择了如下实体: public List<Customer> findAll() { TypedQuery<Customer> query = getEntityManager().createNamedQuery(Customer.FindAll, Customer.class); return query.getResultList(); } select cus_customer_code, cus_last_name,

到目前为止,我选择了如下实体:

 public List<Customer> findAll()
 {
     TypedQuery<Customer> query = getEntityManager().createNamedQuery(Customer.FindAll, Customer.class);

     return query.getResultList();
 }
select cus_customer_code, cus_last_name, sum(trn_total_turnover_euro) 
from customer, transaction 
where t2c_cus_id = cus_id 
and date_part('month', trn_date) between 1 and 6 
and date_part('year', trn_date) between 2011 and 2012
group by cus_customer_code, cus_last_name;

此查询在数据库中工作。但是我如何在JPQL中做到这一点,这个语句的结果是什么,一对2个实体的列表或者类似的东西?或者这在JPQL中是不可能的,所以我必须使用本机查询吗?

创建一个包含所需成员的附加类。在本例中,
org.test.MyClass

public MyClass {
    private String message;
    private Int time;

    public MyClass ( String msg, Int time ) { ... }

    // get / set
}
然后使用

List<MyClass> list = em.createQuery("SELECT NEW org.test.MyClass( 'Foo', 123 ) FROM IrcEvent ev", MyClass.class).getResultList();
List List=em.createQuery(“从IrcEvent ev中选择新的org.test.MyClass('Foo',123)”,MyClass.class.getResultList();
或者,对于标量值:

List<Object[]> list = em.createQuery("SELECT 'Foo', 123 FROM IrcEvent ev", Object[].class).getResultList();
List List=em.createQuery(“从IrcEvent ev中选择'Foo',123”,对象[].class).getResultList();
Hibernate直到最近才正确实现标量:

下面是一篇关于
SELECT
s的文章:


Hibernate手册对此进行了简要介绍:

谢谢,这显示了结果集的正确语法。对于连接问题,我使用JPQL连接来解决这个问题。