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

我像这样使用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

尝试在 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

您的查询返回 Long 因为count,并且您想将该 long 分配给列表

于 2015-08-05T11:32:43.727 回答