如何在Slick中将空值映射到Seq.empty

时间:2016-03-24 18:13:29

标签: postgresql scala slick

我通过将它们与分隔符连接,将值列表编码到单个数据库列。这工作正常,除非列表为空。在这种情况下,数据库列用空字符串填充,当映射回来时,这给了我一个Seq("")而不是Seq.empty。

{0,1}

我通过使用if语句来解决这个问题,但这感觉很奇怪。我尝试过使用implicit val SeqUriColumnType = MappedColumnType.base[Seq[Uri], String]( p => p.map(_.toString).mkString(","), s => if (s.isEmpty) Seq.empty else s.split(",").map(Uri(_)).toSeq ) ,但是没有编译。我认为它还需要我使用MappedColumnType.base[Seq[Uri], Option[String]]的选项,而这并不是我想要的。

本质上我想要一个空的Seq在db中产生一个空值,并在检索时再次返回一个空的Seq。我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

哦,如果他们处理选项,你可以从最后删除orNull :)。另外,请注意,这里您并没有真正将集合转换为选项。您正在将String转换为选项。它会让它变得更好吗? :)