http://www.javacodegeeks.com/2012/07/ultimate-jpa-queries-and-tips-list-part_7092.htmlで説明されているように、jpa クエリからオブジェクトを取得できます。ここまでは順調ですね。
しかし、これを頻繁に使用する必要があるため、ジェネリックを使用したいと考えています。だから代わりに
Query query = em.createQuery('select new com.model.PersonDogAmountReport(p, size(p.dogs)) from Person p');
私が欲しい
Query query = em.createQuery('select new com.model.Report<Person, Long>(p, size(p.dogs)) from Person p');
また
Query query = em.createQuery('select new com.model.Report<com.model.Person, java.lang.Long>(p, size(p.dogs)) from Person p');
. これを試すと、次の例外が発生します。
org.hibernate.hql.ast.QuerySyntaxException: expecting OPEN, found '<' near line 1
これは、私が欲しいものがサポートされていないということですか? 良い代替手段はありますか?
NamedNativeQueryとresultClassを使用してもほぼ同じことが可能ですが、その方法では Person をエンティティとして取得できません。
代わりにオブジェクトを使用すると、返されたリストをキャストできません。つまり、反復する必要があります-> meh desu.
助けてくれてありがとう。