比較的単純なクエリが必要ですが、JPA のせいで作成が難しくなっています。
SQL バリアントは次のようになります。
SELECT COUNT(DISTINCT OrderID) AS DistinctOrders FROM Orders WHERE CustomerID=7;
[編集: OrderID は主キーではありません。テーブル内で等しい OrderId がさらに存在する可能性があります]
CustomerID
メソッドに渡される変数でを設定する必要があります。
ドキュメントを見つけましたCriteriaQuery
distinct()
が、すべてをまとめることができないようです。
これは私がこれまでに持っているものです:
CriteriaBuilder cb = this.em.getCriteriaBuilder();
CriteriaQuery<Order> c = cb.createQuery( Order.class );
Root<Order> order = c.from( Order.class );
Path<String> customerID = order.get( "customerID" );
c.where( cb.equal( customerID, theId ) );