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

scala – 为什么我不能在光滑的查询中使用Options

发布时间:2020-12-16 18:53:48 所属栏目:安全 来源:网络整理
导读:为了节省我必须创建这么多方法,我尝试将Option’s传递给我的方法,然后检查是否定义了Option,如果是,则应用过滤器. def getUsers(locationId: Option[Int],companyId: Int,salary: Option[Int]): List[User] = { val query = for { u - users if u.companyId
为了节省我必须创建这么多方法,我尝试将Option’s传递给我的方法,然后检查是否定义了Option,如果是,则应用过滤器.

def getUsers(locationId: Option[Int],companyId: Int,salary: Option[Int]): List[User] = {
  val query = for {
    u <- users if u.companyId === companyId && (locationId.isDefined && u.locationId === locationId.get) && (salary.isDefined && u.salary >= salary.get)

  }
  query.list()
}

我收到错误说:

polymorphic expression cannot be instantiated to expected type;

IntelliJ errors are expected Boolean actual Column[Boolean].

这种类型的条款在光滑的查询中是不可能的,或者我只是做错了?

解决方法

我无法告诉你为什么但这会为我编译:

def getUsers(locationId: Option[Int],salary: Option[Int]): List[User] = {
  val query = for {
    u <- users if u.companyId === companyId && locationId.isDefined && u.locationId === locationId.get && salary.isDefined && u.salary >= salary.get
  } yield(u)
  query.list()
}

请注意,没有括号,您必须产生一些东西,否则查询的返回类型将是Unit.

(编辑:李大同)

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

    推荐文章
      热点阅读