Как передать массив в гладкий SQL-запрос? - PullRequest
0 голосов
/ 09 октября 2019

Как передать массив в простой SQL-запрос? Я попытался следующим образом, но это не удалось:

// "com.typesafe.slick" %% "slick" % "3.3.2",  // latest version
val ids = Array(1, 2, 3)
db.run(sql"""select name from person where id in ($ids)""".as[String])

Error: could not find implicit value for parameter e: slick.jdbc.SetParameter[Array[Int]]

Однако этот билет, кажется, говорит, что он должен работать: https://github.com/tminglei/slick-pg/issues/131

Примечание: меня не интересует следующий подход:

db.run(sql"""select name from person where id in #${ids.mkString("(", ",", ")")}""".as[Int])

1 Ответ

0 голосов
/ 09 октября 2019

Проблема, которую вы связали, указывает на коммит, который добавляет это:

def mkArraySetParameter[T: ClassTag](/* ... */): SetParameter[Seq[T]]
def mkArrayOptionSetParameter[T: ClassTag](/* ... */): SetParameter[Option[Seq[T]]]

Обратите внимание, что они не implicit.

Вам нужно будет сделать что-то вроде

implicit val setIntArray: SetParameter[Array[Int]] = mkArraySetParameter[Int](...)

и убедитесь, что он находится в области действия при попытке создать строку sql"...".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...