到目前为止,我选择了这样的实体:
public List<Customer> findAll()
{
TypedQuery<Customer> query = getEntityManager().createNamedQuery(Customer.FindAll, Customer.class);
return query.getResultList();
}
这行得通。通过从结果集中调用这些实体的方法,我什至可以从“连接”表中获取数据,因此我不需要在 JPQL 中进行“真正的”连接。(这就是 JPA 的意义所在)。
现在我想获得一个客户列表,其中包含在给定时间段内的营业额,比如说 2011 年 1 月到 2012 年 6 月。本机查询将如下所示:
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 中是不可能的,所以我必须改用本机查询吗?