在Slick Query中将MappedTo与原始类型进行比较

时间:2017-01-04 13:28:30

标签: 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。

1 个答案:

答案 0 :(得分:3)

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

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

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

有一个问题可以解决这个问题:https://github.com/slick/slick/issues/1664