今までは、次のようなエンティティを選択していました。
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 ではこのようにできないので、代わりにネイティブ クエリを使用する必要がありますか?