微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Scala中解开Slick的Rep对象?

如何解决如何在Scala中解开Slick的Rep对象?

我第一次使用Slick作为带有 Scala MysqL 的FRM工具。

但是,在编写具有多个联接的查询时,我意识到我无法进一步访问某些中间对象以基于它进行过滤。

rep1 此处,其类型为 Rep [Option [Manufacturer]]

如何将该对象解包为制造商,以便可以访问其列?

val query = product
      .joinLeft(manufacturer).on { case (prod,man) => prod.manufacturerid == man.manufacturerid }
      .joinLeft(category).on { case ((prod,rep1),cat) => prod.categoryid == cat.categoryid }
    // .filter() after this using rep1

解决方法

你好Pratik Shah,欢迎来到Stackoverflow。

我发现将Rep内部的任何内容视为在数据库中运行(作为SQL的一部分)很有用。考虑到这一点,您无需解开Rep:您可以在Slick查询中使用它(以及在某种意义上将查询以某种类型的未包装的结果运行到纯值)。

因此,如果您可以在rep1内访问filter,则可以使用Slick的运算符(例如,注意===而不是==)来使用{{1} }值作为查询的一部分。我不能肯定地说不运行代码,但可能会像这样:

Option[Manufacturer]

...或您想对filter { case ((prod,rep1),cat) => rep1.map(_.manufacturerid) === 42 }

做的任何事情

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。