【发布时间】:2018-06-01 00:46:51
【问题描述】:
在按 ID 进行 Slick 查询之前,有没有办法转换 id(从外部哈希到数据库主键 id)。对于其他巧妙的查询,我可以覆盖案例类应用/取消应用以在外部和内部 ID 之间进行映射。但是,当使用 filter() 按 ID 查询时,我不知道在调用 filter 之前没有映射的任何方式。
val res = items.filter(i => i.id === itemId)
这里的 itemId 是外部可见的 ID,而不是存储在数据库中的 id 值。想知道是否可以扩展 TableQuery 并在调用过滤器之前更改 id 值。
希望这个问题有意义。
【问题讨论】:
-
您可以在此处应用您想要的任何转换函数:
val res = items.filter(i => i.id === transform(itemId))其中transform 是所需的转换函数?我不确定我明白你的意思 -
专门寻找透明地执行此操作,这样我们就不必记住对每个查询都使用转换
-
我能看到的最好方法是:1. 使 ItemId 成为特定类型 2. 提供从该类型到 Rep[Int] 的隐式转换,并进行正确的转换
-
@C4stor 你有任何示例代码来说明这一点吗?谢谢!