我是Scala和Play框架的新手。我嘗試從數據表中查詢所選列的所有數據,並將它們保存爲Excel文件。Anorm:隱式轉換[all value(include null)]到[String]
所選列通常有不同的類型,如int,STR,時間戳等
我想轉換所有的值類型,包括空轉換成String (零轉換爲空字符串「」) 不知道一列的實際類型,所以代碼可以用於任何表。
根據Play的文檔,我可以在下面編寫隱式轉換器,但是,這不能處理null。長期搜索這個,找不到解決方案。有人可以讓我知道如何處理隱式轉換器中的null?
預先感謝〜
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"))
}
}
您在運行時看到什麼錯誤? – tryx
錯誤消息:java.lang.RuntimeException:Left(UnexpectedNullableFound(ColumnName(.valuea,Some(valuea)))) at anorm.MayErr $$ anonfun $ get $ 1.apply(MayErr.scala:35) – WeiJ