我有一个带有可为空列的表,当查询空列时,它抛出错误
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 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")
与可为空的列一起使用吗?
如果您正在读取可为空的列,则really应该将它绑定到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 *)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)