我有一个空列一个表,当查询的空列,把它扔到错误
val row: List[(String,String)] = SQL("select top 10 Spare_Part part,Pricing_Category cat from Price_Point_Base")
.as((str("part"))~ str("cat") map(flatten) *)
我检查了链接
https://www.playframework.com/documentation/2.0/ScalaAnorm 。
它只是给远来处理可空列使用类似
SQL("Select name,indepYear from Country")().map { row =>
row[String]("name") -> row[Option[Int]]("indepYear")
}
但由于
str("part")
比row[String]("name")
更紧凑,所以我想用str("part")
尝试,但如何让str("part")
作品与空列? 最佳答案
如果您正在读取一个可为空的列,您确实应该将其绑定(bind)到 Option[String]
以表示它可能缺少值。 ANORM不会将其转换为null
,而是将抛出一个错误。
val row: List[(Option[String], String)] =
SQL("select top 10 Spare_Part part,Pricing_Category cat from Price_Point_Base")
.as( get[Option[String]("part") ~ str("cat") map(flatten) *)
这是凌乱但是,如果你想为
String
提供一个默认值会得到困惑。我们可以做一个可重复使用的解析器,默认NULL
值空字符串:val parser: RowParser[(String, String)] = {
get[Option[String]]("part") ~ get[Option[String]]("cat") map {
case part~cat => (part.getOrElse(""), cat.getOrElse(""))
}
}
然后应用它:
val row: List[(String, String)] =
SQL("select top 10 Spare_Part part,Pricing_Category cat from Price_Point_Base")
.as(parser *)
关于scala - 如何处理空在ANORM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25640468/