JPA在Query中作为字符串列表没有给出答案

时间:2013-12-12 05:39:43

标签: jpa jpa-2.0 openjpa

List<Thing> results = em.createQuery(
"select t from Thing t where t.status in ('A', 'E')")
.getResultList();

这是使用创建查询而没有参数。它工作正常

List<String> statusList= new ArrayList<String>();
statusList.add("A");
statusList.add("E");

 List<Thing> results = em.createQuery(
"select t from Thing t where t.status in ('"+statusList.toSting()+"')")
.getResultList();

这不起作用。我不想设置IN(:参数)。我只需要在上面描述的那个

1 个答案:

答案 0 :(得分:1)

你不能像上面那样做你必须使用in如下

Query query=em.createQuery(
"select t from Thing t where t.status in (:list)")
query.setParameterList("list", statusList)
query.getResultList();

您的statusList.toSting()不会生成类似'A','E'的字符串,因为您已在statusList.toSting()添加了(),因此如果您的最终结果看起来像('A','E')那么只有你的查询才会给出正确的结果

相关问题