【发布时间】:2017-03-03 07:33:30
【问题描述】:
我有一个包含两列的数据库表:
startDate -> date type
duration -> nullable integer
在我的 Slick 配置中,这些列分别定义为 LocalDate(我使用的是 Joda)和 Option[Int]。
现在,我想编写一个查询,给出一个日期givenDate,它会返回定义duration 和startDate + duration < givenDate 的所有行。
我期待这样的事情:
db.run(table.filter(t => {
t.duration.isDefined &&
t.startDate < givenDate.minusDays(t.duration.getOrElse(0))
}))
不幸的是,这不起作用,因为t.duration.getOrElse(0) 并不是真正的整数,而是Rep[Int]。
我该怎么做?
我正在使用的技术:Scala、Slick 3.1、Joda Time、slick-joda-mapper
【问题讨论】:
-
stackoverflow.com/questions/21349547/…看看这个问题,可能对你有帮助
-
@KamilBanaszczyk 不幸的是,这没有帮助。我可以比较日期(正如我提到的,我使用的是
slick-joda-mapper)。我不能做的是修改查询中的日期,然后进行比较。 -
我不知道 slick-joda-mapper 是如何工作的,但是您是否尝试过将 givenDate 包装在 Rep 中?也许然后它将允许对 Rep[Int] 执行操作?
标签: scala jodatime slick slick-3.0