Как использовать обнуляемые столбцы с Anorm и Play Framework? - PullRequest
1 голос
/ 12 августа 2011

У меня есть класс дел MyRecord, который я хочу использовать для каждой строки в наборе результатов:

case class MyRecord(id: Int, remindeMe: Option[org.joda.time.DateTime])

Как ВЫБРАТЬ все строки в таблице и вернуть список MyRecord, используя Scala и Anorm сPlay Framework?

Я пробовал:

def getRecords() : List[MyRecord] = {
      val records = SQL("SELECT id, data FROM mytable")().collect {
          case Row(id: Int, Some(data: Long)) => 
                      MyRecord(id, new org.joda.time.DateTime(data))
     }
}

Если столбец data равен нулю, я хочу None, в противном случае я хочу Some(data) как remindMe в классе case.Да, приведенный выше код Scala очень неправильный, но я не понимаю, как это решить.

1 Ответ

0 голосов
/ 12 августа 2011

Это должно работать, как вы уже определили опцию:

def getRecords() : List[MyRecord] = {
      SQL("SELECT id, data FROM mytable")().collect {
          case Row(id: Int, Some(data: Long)) => 
                  MyRecord(id, Some(new org.joda.time.DateTime(data)))
          case Row(id: Int, None) => 
                  MyRecord(id, None)

     }
}

В случае вставки вы проигнорируете все результаты None, так как они не будут совпадать с Some (data)

EDITдобавление «toList» в конце решает, как сказал @kassens.Я проверил это в Play 1.2.2-Scala 0.91 env.Есть способ дать ему очки?:)

...