Ich bin neu in Scala und Play Framework. Ich versuche, alle Daten für ausgewählte Spalten aus einer Datentabelle abzufragen und sie als Excel-Datei zu speichern.Anorm: implizite Konvertierung [alle Werte (einschließlich null)] in [String]
Ausgewählte Spalten haben in der Regel unterschiedliche Typen wie Int, Str, Zeitstempel usw.
Ich möchte alle Werttypen konvertieren, sind null in String (null umwandeln zu leeren String „“) ohne zu wissen, der tatsächliche Typ einer Spalte, so dass der Code für alle Tabellen verwendet werden kann.
Nach Play-Dokument kann ich den impliziten Konverter unten schreiben, jedoch kann dies nicht mit Null umgehen. Für lange Zeit gegoogelt, kann keine Lösung finden. Kann mir bitte jemand sagen, wie man im impliziten Konverter mit Null umgehen kann?
Vielen Dank im Voraus ~
implicit def valueToString: anorm.Column[String] =
anorm.Column.nonNull1[String] { (value, meta) =>
val MetaDataItem(qualified, nullable, clazz) = meta
value match {
case s: String => Right(s) // Provided-default case
case i: Int => Right(i.toString()) // Int to String
case t: java.sql.Clob => Right(t.toString()) // Blob/Text to String
case d: java.sql.Timestamp => Right(d.toString()) // Datatime to String
case _ => Left(TypeDoesNotMatch(s"Cannot convert $value: ${value.asInstanceOf[AnyRef].getClass} to String for column $qualified"))
}
}
Welchen Fehler sehen Sie zur Laufzeit? – tryx
Fehlermeldung: java.lang.RuntimeException: Links (UnexpectedNullableFound (Spaltenname (.valuea, Some (valuea)))) bei anorm.MayErr $$ anonfun $ get $ 1.apply (MayErr.scala: 35) – WeiJ