要用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 returning jobRecords.map(_.id))在编译时(即在容器启动时)立即生成一次语句。
Compiled替换了新API中的Parameters,并在选择,更新和(我认为)删除绑定(bind)占位符以生成准备好的语句的地方起作用。对于插入语句,没有任何绑定(bind),您已经有一个+=的实例。

10-07 12:08