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

This is using create query and without parameter.And it works fine

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();

This is not working .I don't want IN(:parameter) to set .Only I need in the above descried one

有帮助吗?

解决方案

You can not do it like above You have to use in as below

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

Your statusList.toSting() will not produce a string like 'A','E' becuase you have added the statusList.toSting() in () so if your ultimate result will looks like ('A','E') then only your query will give correct results

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top