如何在Scala Slick查询中否定"inSet"?

Zim*_*oot 10 scala slick

我试图用否定的方法构造一个Slick查询,inSet但是我无法弄清楚正确的语法.我想做点什么

val lst = List(1, 2, 3)
Query(Table1).where(_.id1 === 1).where(!(_.id2 inSet lst)).list
Run Code Online (Sandbox Code Playgroud)

要么

Query(Table1).where(_.id1 === 1).where(isNot(_.id2 inSet lst)).list
Run Code Online (Sandbox Code Playgroud)

两者都没有通过集合.有可能否定inSet这样的,如果是这样,正确的语法是什么?或者是否有另一种方法来构造不需要否定的查询inSet?我正在使用Slick 1.0.1,我希望我们将在下个月内升级到Slick 2.0.(我可以filterNot(lst.contains(_.id2))对查询结果应用一个而不是在查询中放入一个否定inSet的内容,但这会使我正在编写的函数变得复杂,所以inSet如果可能的话我宁愿使用否定的.)

cvo*_*ogt 11

之一

Query(Table1).filter(_.id1 === 1).filter(row => !(row.id2 inSet lst)).list

Query(Table1).filter(_.id1 === 1).filterNot(_.id2 inSet lst).list

相关: https ://github.com/slick/slick/pull/204

附注: where已弃用.使用Scala集合术语而不是SQL术语.此外,您在错误的假设下,在Scala !(_.id2 inSet lst)扩展到x => !(x.id2 inSet lst)实际上它扩展到!(x => x.id2 inSet lst)没有多大意义.