Tôi đã xây dựng một NamedQuery trông giống như sau:
@NamedQuery(name = "EventLog.viewDatesInclude",
query = "SELECT el FROM EventLog el WHERE el.timeMark >= :dateFrom AND "
+ "el.timeMark <= :dateTo AND "
+ "el.name IN (:inclList)")
Những gì tôi muốn làm là điền vào tham số: inclList với danh sách các mục thay vì một mục. Ví dụ: nếu tôi có một new List<String>() { "a", "b", "c" }
cách làm thế nào để tôi nhận được điều đó trong tham số: inclList? Nó chỉ cho phép tôi mã hóa một chuỗi. Ví dụ:
setParameter("inclList", "a") // works
setParameter("inclList", "a, b") // does not work
setParameter("inclList", "'a', 'b'") // does not work
setParameter("inclList", list) // throws an exception
Tôi biết tôi chỉ có thể xây dựng một chuỗi và tạo toàn bộ Truy vấn từ đó, nhưng tôi muốn tránh chi phí. Có cách nào tốt hơn để làm điều này không?
Câu hỏi liên quan: nếu Danh sách rất lớn, có cách nào tốt để xây dựng truy vấn như vậy không?