如何解决如何在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 举报,一经查实,本站将立刻删除。