簡體   English   中英

Scala Slick過濾器兩個條件-錯誤會話不適用

[英]Scala Slick filter two conditions - error session is not applicable

我正在使用Scala和Slick,並且嘗試使用兩個條件執行簡單查詢

import JiraData._
import org.scala_tools.time.Imports._

import scala.slick.driver.PostgresDriver.simple._

val today = new DateTime()
val yesterday = today.plusDays(-1)

implicit val session = Database.forURL("jdbc:postgresql://localhost/jira-performance-manager",
    driver = "org.postgresql.Driver",
    user = "jira-performance-manager",
    password = "jira-performance-manager").withSession {
    implicit session =>
        val activeUsers = users.filter(_.active === true)
        for (activeUser <- activeUsers) {
            val activeUserWorkogs = worklogs.filter(x => x.username === activeUser.name && x.workDate === yesterday)
        }
}

但我收到錯誤:

Error:(20, 95) value === is not a member of scala.slick.lifted.Column[org.scala_tools.time.Imports.DateTime]
 Note: implicit value session is not applicable here because it comes after the application point and it lacks an explicit result type
            val activeUserWorkogs = worklogs.filter(x => x.username === activeUser.name && x.workDate === yesterday)
                                                                                                      ^

怎么了 如何獲得按兩個條件過濾的結果列表?

scala-tools.time使用JodaDateTime。 參見https://github.com/jorgeortiz85/scala-time/blob/master/src/main/scala/org/scala_tools/time/Imports.scala Slick沒有對Joda的內置支持。 有Slick Joda映射器: https : //github.com/tototoshi/slick-joda-mapper 或者,您也可以輕松添加自己: http//slick.typesafe.com/doc/2.1.0/userdefined.html#using-custom-scalar-types-in-queries

作為旁注:類似的東西

for (activeUser <- activeUsers) {
    val activeUserWorkogs = worklogs.filter(...)

看起來好像走錯了方向。 它將為每個活動用戶運行另一個查詢。 更好的方法是對所有活動用戶的工作日志使用聯接或運行單個累積查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM