J'ai une classe cas MyRecord que je veux utiliser pour chaque ligne dans un ResultSet:Comment utiliser des colonnes NULL avec Anorm et Play Framework?
case class MyRecord(id: Int, remindeMe: Option[org.joda.time.DateTime])
Comment sélectionner toutes les lignes d'une table et retourne une liste de MyRecord utilisant Scala et Anorm avec le cadre de lecture?
J'ai essayé avec:
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))
}
}
Si la colonne data
est nulle, je veux None
sinon je veux Some(data)
comme RemindMe dans la classe de cas. Oui, le code Scala ci-dessus est très mauvais, mais je ne comprends pas comment résoudre ce problème.
Merci, mais comment l'obtenir à une liste? Maintenant, j'ai cette erreur: 'Erreur soulevée est: incompatibilité de type; trouvé: scala.collection.immutable.Stream [models.MyRecord] requis: List [models.MyRecord] ' – Jonas
@Jonas collect devrait retourner la liste, j'ai mis à jour le code, le val ne devrait pas être là. Avez-un test rapide dans un environnement Scala (No jouer Anorm si) et cela a fonctionné –
Oui, j'ai également supprimé les enregistrements val avant d'exécuter le code. C'est le code actuel qui retourne 'scala.collection.immutable.Stream [models.MyRecord]' au lieu de 'List [models.MyRecord]' – Jonas