如何在Scala Slick查询中否定“inSet”?
我正在尝试使用否定的inSet构造一个Slick查询,但是我无法找出正确的语法.我想做点什么
val lst = List(1,2,3) Query(Table1).where(_.id1 === 1).where(!(_.id2 inSet lst)).list 要么 Query(Table1).where(_.id1 === 1).where(isNot(_.id2 inSet lst)).list 两者都没有通过集合.是否有可能否定这样的inSet,如果是这样,正确的语法是什么?或者是否有另一种方法来构造不需要否定的inSet的查询?我正在使用Slick 1.0.1,我希望我们将在下个月内升级到Slick 2.0. (我可以将filterNot(lst.contains(_.id2))应用于查询结果,而不是在查询中放入一个否定的inSet,但这会使我写的函数复杂化,所以我宁愿使用否定的inSet尽可能.) 解决方法
之一
查询(表1).filter(_.id1 === 1).filter(row =>!(row.id2 inSet lst)).list 查询(表1).filter(_.id1 === 1).filterNot(_.id2 inSet lst).list 相关:https://github.com/slick/slick/pull/204 附注:不推荐使用的地方.使用Scala集合术语而不是SQL术语.另外,你在错误的假设下,在Scala中!(_.id2 inSet lst)扩展为x => !(x.id2 inSet lst)实际上它扩展为!(x => x.id2 inSet lst),这没有多大意义. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |