scala – 在Slick中描述可选字段
发布时间:2020-12-16 10:03:40 所属栏目:安全 来源:网络整理
导读:Slick DSL允许两种方式在表中创建可选字段. 对于这个案例类: case class User(id: Option[Long] = None,fname: String,lname: String) 您可以使用以下方法之一创建表映射: object Users extends Table[User]("USERS") { def id = column[Int]("id",O.Prima
Slick DSL允许两种方式在表中创建可选字段.
对于这个案例类: case class User(id: Option[Long] = None,fname: String,lname: String) 您可以使用以下方法之一创建表映射: object Users extends Table[User]("USERS") { def id = column[Int]("id",O.PrimaryKey,O.AutoInc) def fname = column[String]("FNAME") def lname = column[String]("LNAME") def * = id.? ~ fname ~ lname <> (User,User.unapply _) } 和 object Users extends Table[User]("USERS") { def id = column[Option[Long]]("id",O.AutoInc) def fname = column[String]("FNAME") def lname = column[String]("LNAME") def * = id ~ fname ~ lname <> (User,User.unapply _) } } 两者有什么区别?一个是旧方式而另一个是新方式,还是它们用于不同目的? 我更喜欢第二种选择,你将身份定义为可选的身份定义的一部分,因为它更加一致. 解决方法
.?第一个操作符允许您推迟选择在定义投影时将字段设置为可选字段.有时这不是你想要的,但将你的PK定义为一个选项可能有点滑稽,因为人们可能期望PK为NOT NULL.
您可以使用 .?在除*之外的其他预测中,例如: def partial = id.? ~ fname 然后你可以做Users.partial.insert(无,“雅各布斯”)而不用担心你不感兴趣的字段. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- unix – 为什么fork和exec保持2个单独的调用
- webservice 常用接口
- angular – inject()必须从注入上下文中调用
- scala – 如何理解anorm中的“case id~username => _”?
- 我的webpack配置文件在angular 2 cli中在哪里?
- 在vim状态行中显示当前功能
- 解析/传递命令行参数到bash脚本 – “$@”和“$*”之间有什
- Scala:Cats,OptionT [Future,T]和ApplicativeError
- axis客户端访问webservice方法(转)
- scala – 迁移到游戏! 2.5导致此错误:NoSuchMethodError: