У меня есть запрос, который выглядит примерно так:
SELECT * FROM someTable t WHERE (t.a, t.b) IN (VALUES (1, 2), (3, 4))
И он будет выбирать любые записи, где t.a == 1 AND t.b == 2
или t.a == 3 AND t.b == 4
.
Кажется, это работает просто отлично.
Однако я не могу придумать, как правильно указать параметр для NamedJDBCTemplate
. Я попытался дать ему список списков (то есть, List<List<int>>
), но, похоже, он взорвался.
val query = "SELECT * FROM someTable t WHERE (t.a, t.b) IN (VALUES :values)"
namedJdbcTemplate.queryForList(query, mapOf("values" to listOf(listOf(1, 2), listOf(3, 4))))
Я также пытался вручную преобразовать значение в строку, но это тоже не радует.
namedJdbcTemplate.queryForList(query, mapOf("values" to "(1, 2), (3, 4)"))
(На самом деле я работаю в Котлине, но это не должно влиять на этот вопрос)