加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 08:59:52 所属栏目:安全 来源:网络整理
导读:我正在尝试使用否定的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构造一个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),这没有多大意义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读