scala - 将 MappedTo 与 Slick Query 中的原始类型进行比较

标签 scala slick

如何将 MappedTo[T] 与原始 T 列进行比较?

我在使用此代码时遇到问题(无法执行选项映射操作):

for {
  toEventLink <- Link.linksFromQuery(fromEntity).filter(_.toTable === Event.tableName)
  event <- Event.table.filter(e => e.id === toEventLink.toId)
} yield event

在:e.id === toEventLink.toId,其中e.id是一个ID(扩展MappedTo[Long])和toEventLink.toId 是一个原始的 Long。

最佳答案

此编译器检查正在执行其应该执行的操作(例如,不会让您意外地将 ID 与非 ID 的内容进行比较)。但我完全明白为什么这会很有用(例如,当迁移架构以开始使用键入的键时)。

您可以使用 asColumnOf 将列转换为您想要的类型。例如:

e => e.id.asColumnOf[Long] === toEventLink.toId

有一个问题需要为此制定更通用的解决方案:https://github.com/slick/slick/issues/1664

关于scala - 将 MappedTo 与 Slick Query 中的原始类型进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41465003/

相关文章:

scala - Scala 应用程序的 Gradle init 项目

scala - 在 IntelliJ 中使用 Scala 工作表很困难

java - 如何在 Scala 中以字符串格式重复参数

scala - 在Scala中在运行时获取多态类的实例

scala - 一对多的性能光滑查询

scala - 这是 Scala 2.9.0.1 Actor 库中的错误吗

scala - 测试 Play + Slick 应用

Scala+Slick - 获取 GroupBy 结果的计数

Scala Slick 3.0.0 奇怪的错误

mysql - 无法让 Scala、Slick 和 MySQL 协同工作