要用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),您已经有一个+=
的实例。