我建立了一個NamedQuery,看起來像這樣:添加IN子句列表的JPA查詢
@NamedQuery(name = "EventLog.viewDatesInclude",
query = "SELECT el FROM EventLog el WHERE el.timeMark >= :dateFrom AND "
+ "el.timeMark <= :dateTo AND "
+ "el.name IN (:inclList)")
我想要做的就是填寫參數:inclList的項目,而不是一個項目的列表。例如,如果我有一個new List<String>() { "a", "b", "c" }
我如何得到:inclList參數?它只讓我編一個字符串。例如:
setParameter("inclList", "a") // works
setParameter("inclList", "a, b") // does not work
setParameter("inclList", "'a', 'b'") // does not work
setParameter("inclList", list) // throws an exception
我知道我可以只建立一個字符串,並建立從整個查詢,但我想避免的開銷。有沒有更好的方法來做到這一點?
相關問題:如果列表非常大,是否有任何建立這樣的查詢的好方法?
就是這樣,謝謝。 – AlanObject 2010-12-08 16:19:38
不......我的情況正好相反。如果我使用:inclList,那麼它不起作用。如果我使用IN(:inclList),那麼它工作。 – 2012-11-24 10:27:53
另請注意提及:您的參數的類型必須是對象的集合(而非數組)。對象必須與字段的類型匹配。 .toString()不能替代類String – dube 2014-03-21 10:47:12