Предложение «In» в анорме?

Кажется, непростой способ использовать предложение 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() 

Это слишком сложно.

Есть ли способ попроще? Или игра должна что-то упростить?

26
задан cchantep 8 January 2016 в 16:45
поделиться