我是 Scala 和 Slick 的新手,我发现了这个从 AnyType 到 Boolean 的内置类型映射器。我需要将“y”映射为true,将“n”映射为false,这似乎很简单。有人可以告诉我如何使用它吗?我现在的代码是这样的,重新发明轮子:
sealed trait YesNoBoolean
case object True extends YesNoBoolean
case object False extends YesNoBoolean
implicit val boolTypeMapper = MappedColumnType.base[YesNoBoolean, String](
{ b =>
assertNotNull(b)
if(b == True) "y" else "n"
}, { i =>
assertNotNull(i)
if(i == "y") True else False
}
)
我实际上需要映射到真正的布尔类型。我有几列使用这种邪恶的方案(PHP 的遗留问题)。
我想我需要在表定义中这样做:
object Record extends Table[(Int,YesNoBoolean)]("record") {
def is_usable_entry = column[YesNoBoolean]("usable_entry", O.DBType("enum('y','n')"))
...
}