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

Это использование создать запрос и без parameter.And он работает отличноJPA В Query в списке строка не дает ответа

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 (: параметр), чтобы установить .only мне нужно в описанном выше один

ответ

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') только тогда ваш запрос будет давать правильные результаты

+0

Есть ли возможное решение без установки Список параметров – muthukumar

+0

@muthukumar вы можете подготовить разделенные запятой значения коннектов списка i, e как A, E, B, D ..... и после этого вы можете поместить это в 'in clause' – Deepak

+0

' for (String content: statusList) { содержимое + = content + ","} 'и может использовать' em.createQuery ( "выберите t из Thing t, где t.status in + contents +") .getResultList(); ' – Deepak