Я хотел бы знать, если есть возможность сделать выборку с JDBCTemplate, используя setParameter
для List<CaseW>/Set<CaseW>
, где CaseW имеет 2 поля с длинным типом?
У меня есть таблица, которую нужно выбрать как что:
SELECT *
FROM assertions
WHERE (a_id, b_id) in ( (1, 15), (4, 16), (2, 13) )
и из моего Java кода я хотел бы сделать что-то подобное:
public class CaseW{
private long a_id;
private long b_id;
// Constructors, getters, setters, hash codes etc.
}
public List<MyResult> getData() {
Set<CaseW> caseW = new HashSet<CaseW>;
caseW.add(new CaseW(1,15));
caseW.add(new CaseW(4,16));
caseW.add(new CaseW(1,13));
String sql = "SELECT * " +
"FROM assertions " +
"WHERE (a_id, b_id) IN (:caseList) ";
return sqlManager.createQuery(sql, MyResult.class)
.setParameter("caseList", caseW)
.getResultList();
}
Так что в принципе мне интересно, возможно ли сделать что-то подобное или мне нужно выполнить foreach поверх строк Set и concat, чтобы подготовить SQL к этому выражению "IN"?
Буду очень признателен за любые предложения по решению этой проблемы.