Можно ли выполнить пакетное обновление с пунктом переменной длины в отношении sqlite db?
val data = Seq(
Seq(Set(1,2,3), 50),
Seq(Set(4,5,6,7), 51)
)
NamedDB(symbol).localTx { implicit s: DBSession =>
sql"""
update table_a
set xs=(
select group_concat(x) from (
select distinct x from table_b where id in (?)
)
) where id=?
""".batch(xs.map(_.data): _*).apply()
}
Этот подход по умолчанию заставляет scalikejdbc регистрировать, что параметр устанавливается как объект (предупреждение?), и в результате обновления не применяются.
Я попытался использовать связыватель параметров, но невозможно установить параметр in (?)
в качестве типа массива, поскольку sqlite (и его драйвер JDBC) не поддерживают массивы.
Альтернативой является изменение текста SQL так, чтобы в предложении было ?
на значение. Это невозможно при пакетном обновлении, так как разные строки содержат разное количество значений.