我有两个工作语句可以将一行插入到一个名为document的Slick表中。
第一个列插入从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 )?
背景:
我想从insert中排除全文列的原因是它是Postgres类型的tsvector,但是生成的光滑代码将它视为字符串。在插入时,值(即使是null或None)转换为与tsvector不兼容并引发异常的某种文本类型。在没有附加库的情况下,我没有找到插入tsvector的解决方案。如果你认为有,我应该走这条路,请发表评论。
发布于 2017-12-04 02:07:35
虽然我相信正确的方法是解决tsvector问题,但我没有足够的邮政经验来帮助你。至于您的解决方案,您可以这样做,代码应该如下所示:
(Tables.Document.map(r => (r.name)) returning Tables.Document.map(_.id)) += ("Name")如果将其分成几个部分,您可以看到,首先创建了一个Query,如第二个示例所示,但是与其立即对其应用+=,不如首先使用returning链接它,然后调用+=。
使用额外的邮电感知库有什么问题?
https://stackoverflow.com/questions/47623049
复制相似问题