scala – Slick并按选项列过滤
发布时间:2020-12-16 09:31:40 所属栏目:安全 来源:网络整理
导读:我试图使用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,act
我试图使用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 Query帖子中得到了这个想法,所以我不知道如果光滑的东西比以前更好一些,但是当我从查询中查看结果的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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- unix – 确定* nix上的静态库cpu体系结构
- WebService发布协议--SOAP和REST的区别
- 为什么Scala不允许List.map _并在REPL中键入签名
- CXF 发布WebService - 客户端调用
- AngularJS tree demo
- shell脚本监控cpu/内存使用率 转
- vim phpdoc multiline comment autoindent
- vim使用—移动到文件开始和结束位置和当前位置(gg,G)、快速
- From Serialized to Shell :: Auditing Google Web Toolkit
- scala – Play Framework 2.2 – 找不到参数超时的隐含值