我正在尝试构建一个查询,该查询使用 slick-pg 作为我的 slick 驱动程序返回一些选定的列,但我在尝试映射 json 列时遇到问题MyValueObject
。我在运行时遇到的错误是......
A client error occurred: slick.driver.JdbcTypesComponent$MappedJdbcType$$anon$1 cannot be cast to slick.ast.OptionType"
我的案例案例类、表映射器和查询看起来与此类似...
case class MyAggregateObject(foo: String, valueObj: Option[MyJsonObject)
case class MyJsonObject(bar: Int, baz: Option[String] = None)
implicit val jsonObjectMapper = MappedColumnType.base[Option[MyJsonObject], JsValue](s => Json.toJson(s),str => Json.fromJson[MyJsonObject](str).asOpt)
val q = for {
list <- myAggregateObjects
} yield (
list.foo,
list.MyJsonObject.flatMap(_.baz.bind)) // throws the error!
我现在能想出的唯一解决方案是映射结果,但返回的行可能非常大,我想避免将一系列大对象加载到内存中。