1
TypedQuery<UserNameAndPostCount> query = entityManager.createQuery(
  "select new com.loki2302.JPQLTest$UserNameAndPostCount" + 
  "(u.userName, count(p.id)) " +
  "from User u " + 
  "left join u.posts p group by u.userName", UserNameAndPostCount.class);

List<UserNameAndPostCount> resultList = query.getResultList();

com.loki2302.JPQLTest$UserNameAndPostCountJPQLクエリテキストにハードコーディングせずに同じことを行う「公式の」方法はありますか?

4

2 に答える 2

1

のようなクエリ

entityManager.createQuery("SELECT u.userName, count(p.id) FROM User u LEFT JOIN u.posts p GROUP BY u.userName", UserNameAndPostCount.class);

確かにDataNucleus JPAはそのようなことを目指しています。結局のところ、最後の引数は結果クラスであるため、基本的には、これらの結果フィールドを引数として使用してそのタイプのオブジェクトを作成する (または、これらの 2 つの結果フィールドと一致する名前のセッターを使用する) と言っており、簡単に「AS { alias}"を select 句に追加して、結果フィールドを取得し、結果クラスの Bean プロパティ名と一致させます。

于 2013-02-07T06:34:10.617 に答える