0

私はこれを理解しようとしている初心者のように感じます-

数値のリストから選択する以下のjpaクエリの正しい構文を知りたいです。?

List<Long> personIds = new ArrayList<Long>();
personIds.add(1L);
personIds.add(2L);
jpaTemplate.find("select count(*) from Person p where p.id in (?) ",personIds);

やってみると

 "java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Long"
4

3 に答える 3

0

角かっこなしでJPQLにパラメータを設定してみてください。このようなもの:

List<Long> personIds = new ArrayList<Long>();
personIds.add(1L);
personIds.add(2L);
jpaTemplate.find("select count(*) from Person p where p.id in ?",personIds);

これで問題は解決すると思います。

于 2013-02-09T08:10:17.873 に答える
0

私はそのようにEntityManagerを使用してそれを修正しました-

Query q = jpaTemplate.getEntityManager().find("select count(*) from Person p where p.id in :personIds") ; 
q.setParameter("personIds",personIds); 
q.getResultSet();
于 2013-02-12T21:59:03.487 に答える
0

クエリがLongを返しているのは、そのLongcountをリストに割り当てたいからです。

于 2015-08-05T11:32:43.727 に答える