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(:参数)。我只需要在上面描述的那个
答案 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')
那么只有你的查询才会给出正确的结果