【发布时间】:2017-12-03 20:39:40
【问题描述】:
我有两个工作语句可以使用 Slick 在名为 document 的表中插入一行。
第一个插入所有列,取自 row 对象,并返回 Postgres 生成的 ID:
(Tables.Document returning Tables.Document.map(_.id)) +=
DocumentRow(id=-1, name="Name", fulltext="The text")
第二个忽略名为fulltext的列,只插入name但不返回生成的ID:
Tables.Document.map(r => (r.name)) += ("Name")
如何将两者结合起来(将插入限制为列的子集和同时返回生成的 ID)?
背景:
我想从插入中排除全文列的原因是它是 Postgres 类型tsvector,但生成的 Slick 代码将其视为字符串。在插入时,值(即使null 或None)被转换为一些与tsvector 不兼容的文本类型并引发异常。我没有找到在没有额外库的情况下插入tsvector 的解决方案。如果您认为有,请发表评论,我应该遵循这条路。
【问题讨论】:
标签: postgresql scala slick