gpt4 book ai didi

string - 如何将 "y"/"n"列映射到 Scala 的 Slick 中的 boolean 值?

转载 作者:行者123 更新时间:2023-12-04 17:20:15 25 4
gpt4 key购买 nike

我是 Scala 和 Slick 的新手,我找到了 this built-in type mapper from AnyType to Boolean .我需要将“y”映射为真,将“n”映射为假,这看起来很简单。有人可以告诉我如何使用它吗?我现在的代码是这样的,重新造轮子:

    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
}
)

我实际上需要映射到真正的 boolean 类型。我有几个专栏使用了这个邪恶的方案(PHP 的遗留问题)。

我想我需要在表定义中这样做:

object Record extends Table[(Int,YesNoBoolean)]("record") {
def is_usable_entry = column[YesNoBoolean]("usable_entry", O.DBType("enum('y','n')"))
...
}

最佳答案

试试这个

def is_usable_entry = column[Boolean]
("usable_entry",O.DBType("enum('y','n')"))(
MappedColumnType.base[Boolean, String](
if(_) "y" else "n",_=="y"
)
)

如果这不起作用,您可能必须取出类型映射器并使其隐式化。在这种情况下,您可能必须从导入中排除 Boolean 的其他隐式类型映射器 (booleanColumnType => _)。

关于string - 如何将 "y"/"n"列映射到 Scala 的 Slick 中的 boolean 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19605663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com