postgresql - 如何在 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]
正确映射?
解决方案
推荐阅读
- python - 在 Hangman 游戏中制作难度功能
- java - 改造在使用动态标题时获取重复标题
- node.js - 终端不显示 yargs 的处理程序值
- html - 将代码移动到 Angular 组件时,猫头鹰轮播不起作用
- python - 如何通过 lambda 函数从 dynamodb 中检索值
- anaconda - 带有 spacy.load('en_core_web_sm') 的 ValueError
- rabbitmq - 当我尝试侦听具有 json 有效负载的队列时,RabbitTemplate 接收和转换方法抛出空指针异常
- django - 获取 2 列的所有值
- php - 如何在laravel中接收两个日期之间的所有天数
- redux-form - redux-form 是否会随着函数工作而改变 prop 参数值?