将 MappedTo 与 Slick Query 中的原始类型进行比较
Compare MappedTo with raw type in Slick Query
您如何比较 MappedTo[T] 与原始 T 列?
我在使用此代码时遇到问题(无法执行选项映射操作):
for {
toEventLink <- Link.linksFromQuery(fromEntity).filter(_.toTable === Event.tableName)
event <- Event.table.filter(e => e.id === toEventLink.toId)
} yield event
In: 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
您如何比较 MappedTo[T] 与原始 T 列?
我在使用此代码时遇到问题(无法执行选项映射操作):
for {
toEventLink <- Link.linksFromQuery(fromEntity).filter(_.toTable === Event.tableName)
event <- Event.table.filter(e => e.id === toEventLink.toId)
} yield event
In: 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