scala – 在Slick 3中,如何使用映射的case类对一个插件进行SQL编译?

要对SQL查询进行SQL编译,您需要编译一个函数,该函数为每个查询参数arg:type提供一个类型为Rep [type]的提升参数.

我有一个案例类JobRecord和一个TableQuery jobRecords.

因此,要插入JobRecord案例类实例,我需要能够说出如下内容:

val qMapToId = (jobRecords returning jobRecords.map(_.id))
def ucCreate(jobRecord: Rep[JobRecord]) = qMapToId += jobRecord
val cCreate = Compiled(ucCreate _)

但是当然这不会编译,因为=不会占用Rep,我也不确定Rep [JobRecord]是否有效.

我尝试了很多东西,不值得展示,包括混合在Monomorphic Case Classes指南中.我可能几次离解决方案一步之遥.指向一个工作示例的指针会很棒!

最佳答案 你不需要做任何事情,val qMapToId =(jobRecords返回jobRecords.map(_.id))在编译时(即在容器启动时)生成一次语句.

Compiled替换新API中的参数,并用于选择,更新和(我相信)删除绑定占位符以生成预准备语句的位置.对于insert语句,没有什么可绑定的,你已经有了一个=的实例.

点赞