このクエリをTypedQueryとして記述し、2つのLongを2つの公開Longフィールドがあるオブジェクトに実行させることは可能ですか?JPAの通常のクエリではなくTypedQuery
Query q = em.createQuery(
"SELECT c.id, COUNT(t.id) " +
"FROM PubText t " +
"JOIN t.comm c " +
"WHERE c.element = ?1 " +
"GROUP BY c.id");
q.setParameter(1, e);
List<?> rl = q.getResultList();
Iterator<?> it = rl.iterator();
HashMap<Long, Long> res = new HashMap<Long, Long>();
while (it.hasNext()) {
Object[] n = (Object[]) it.next();
res.put((Long)n[0], (Long)n[1]);
}
return res;
こんにちは@kostjaエラーが発生しました(複数の返品でクエリのTypedQueryを作成できません)。私のSQLは次のようになっています: 'SELECT NEW com.company.ui.EntityIDKey(c.companyId、c.name)会社cからc.companyIdはnullではなく、c.nameはnullでなくlength(trim(c.name ))> 0 order by c.name asc'。私は次のようにTypedQueryを使用しています: 'List companies = getEntityManager()。createQuery(sql、EntityIDKey.class).getResultList();' –
EntityIDKeyがエンティティでない場合、これが当てはまります。プロバイダはそのようなクエリを自由にサポートしています。あなたは通常のクエリを使ってみましたか? – kostja
が真である場合、 'EntityIDKey'はエンティティではありません。私はHibernateプロバイダを使用していて、何とかそれが動作すると推定しています。 'Company'のコレクションを構築する通常のクエリはうまくいきます。 –