我通过将它们与分隔符连接,将值列表编码到单个数据库列。这工作正常,除非列表为空。在这种情况下,数据库列用空字符串填充,当映射回来时,这给了我一个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。我该怎么做呢?
答案 0 :(得分:0)
哦,如果他们处理选项,你可以从最后删除orNull
:)。另外,请注意,这里您并没有真正将集合转换为选项。您正在将String转换为选项。它会让它变得更好吗? :)