我正在尝试使用slick-pg构建一个返回一些选定列的查询作为我的光滑驱动程序,但是我在尝试映射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!
我现在能够提出的唯一解决方案是映射结果,但返回的行可能非常大,我想避免将一系列大对象加载到内存中。