Spring jpaTemplate语法从列表中选择

时间:2013-02-09 00:39:00

标签: java spring list select jpa

我觉得自己像个小伙子试图把这个拿出来 -

我想知道以下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"

3 个答案:

答案 0 :(得分: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);

我认为这应该可以解决您的问题。

答案 1 :(得分:0)

我通过使用EntityManager修复它 -

Query q = jpaTemplate.getEntityManager().find("select count(*) from Person p where p.id in :personIds") ; 
q.setParameter("personIds",personIds); 
q.getResultSet();

答案 2 :(得分:0)

您的查询返回Long count,并且您希望将该长项分配给列表