anorm で「in」句を使用するのは簡単な方法ではないようです。
val ids = List("111", "222", "333")
val users = SQL("select * from users where id in ({ids})").on('ids-> ???).as(parser *)
部品の交換方法は???
?
私は試した:
on('ids -> ids)
on('ids -> ids.mkString("'","','","'"))
on('ids -> ids.mkString("','")
しかし、どれも機能しません。
ディスカッションでまったく同じ問題が見られます: https://groups.google.com/d/topic/play-framework/qls6dhhdayc/discussion、著者には複雑な解決策があります:
val params = List(1, 2, 3)
val paramsList = for ( i <- 0 until params.size ) yield ("userId" + i)
// ---> results in List("userId0", "userId1", "userId2")
User.find("id in ({%s})"
// produces "id in ({userId0},{userId1},{userId2})"
.format(paramsList.mkString("},{"))
// produces Map("userId0" -> 1, "userId1" -> 2, ...)
.on(paramsList.zip(params))
.list()
これは複雑すぎる。
もっと簡単な方法はありますか?それとも、簡単にするために何かを提供する必要がありますか?