gpt4 book ai didi

scala - 光滑和按选项列过滤

转载 作者:行者123 更新时间:2023-12-03 14:59:05 25 4
gpt4 key购买 nike

我正在尝试使用 Scala Slick 1.0.1 过滤可选日期列。

可能我只是没有看到它,但我有一张看起来像这样的表:

case class UserRole(id:UUID, userID:UUID, role:String)
object UserRole extends Table[UserRole]("User_Role") {

//(id: Long = 0l, name: String, active: Boolean) extends KeyedEntity[Long] {
def id = column[UUID]("ID", O.PrimaryKey)
def userID = column[UUID]("user_id")
def vendorID = column[UUID]("vendor_id")
def role = column[String]("role")
def user = foreignKey("user_FK", userID, User)(_.id)

def start = column[java.sql.Date]("startDate")
def endDate = column[Option[java.sql.Date]]("endDate")

def * = id ~ userID ~ role <> (UserRole.apply _, UserRole.unapply _)
}

您会在那里看到 endDate 是可选的。

如何构造一个查询,在其中进行过滤,以便 endDate 可以为 NULL/None 或大于当前 (db) 日期?仅供引用,我通常使用嵌入式 api

谢谢

最佳答案

这不是很好(关于 null.asInstanceOf 的部分),但我认为它会起作用。我从一个旧的 Scala 查询帖子中得到了这个想法,所以我不知道 slick 是否为此添加了更好的东西,但是当我查看结果时 selectStatement从查询中,它看起来是正确的:

val now = new java.sql.Date(System.currentTimeMillis())
val query = for {
role <- UserRole
if (role.endDate === null.asInstanceOf[Option[java.sql.Date]] || role.endDate > now)
} yield role

编辑

感谢@MartinKolinek 的评论,这段代码也可以工作,而且更简洁,可能是更好的做事方式:
val now = new java.sql.Date(System.currentTimeMillis())
val query = for {
role <- UserRole
if (role.endDate.isNull || role.endDate > now)
} yield role

关于scala - 光滑和按选项列过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17554304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com