如何解决如何在 Slick 中将案例类映射为 postgresql 列
我有以下数据结构:
final case class Log(
id: UUID,event: String,Metadata: Option[List[Metadata]]
)
final case class Metadata(key: String,value: String)
用于带有一些可选元数据的事件日志。 我正在尝试使用 Slick (v3.3.3) 和 Slick-pg (v0.17.3) 将它们保存在 postgresql (v42.2.5) 表中:
class LogTable(tag: Tag)
extends BaseTable[Log](tag,"event") {
def id: Rep[EventId] = column[EventId]("id")
def event: Rep[String] = column[String]("event")
def Metadata: Rep[Option[List[Metadata]]] = column[Option[List[Metadata]]]("Metadata")
override def * =
(id,event,eventType,Metadata) <>
((Log.apply _).tupled,Log.unapply _)
}
但是我得到以下编译错误:
Could not find implicit value for parameter tt: slick.ast.TypedType[Option[List[log.domain.Metadata]]]
我尝试编写自定义列映射器:
implicit val MetadataColumnType = MappedColumnType.base[Metadata,String](
{
Meta => write(Meta) // return string
},{
Meta_string => read(Meta_string) // return Metadata
}
)
然而,这种隐式不被认为是必需的,并且会导致同样的错误。
如何正确映射 Option[List[Metadata]
?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。