【问题标题】:What is the best way to build a model/entity in Scala to map with Squeryl?在 Scala 中构建模型/实体以与 Squeryl 映射的最佳方法是什么?
【发布时间】:2015-03-19 04:23:37
【问题描述】:

我对 Scala、Play Framework 和 Squeryl 非常陌生。我已经了解 val 和 var 的概念,但是我很难尝试为我的实体建模。正如我在 Squeryl 文档中看到的,有时他们在 id 上使用 var,而其他时候使用 val。 id 和其他值的最佳方法是什么(有时他们使用 var/val 和其他时间选项,最后一个仅适用于实体上的可为空字段)?

示例 1

    class Playlist(var id: Long, 
                   var name: String, 
                   var path: String) extends KeyedEntity[Long] {
    }

示例 2

class Author(val id: Long, 
              val firstName: String, 
              val lastName: String,
              val email: Option[String]) {
    def this() = this(0,"","",Some(""))        
 }

为什么有时他们会扩展 KeyedEntity[T] 而有时不会?

非常感谢一些帮助!

【问题讨论】:

    标签: scala model playframework-2.0 entity squeryl


    【解决方案1】:

    在 Squeryl 0.9.5 中,所有实体都需要扩展 KeyedEntity[T],但是对于 0.9.6,您可以隐式提供 KeyedEntityDef。示例见this。

    Option[T] 在字段可以包含空值时使用。当该字段为空时,返回None。

    val 与 var 与 Scala 中的任何其他类完全相同。 var 允许重新分配,而 val 或多或少是只读的。如果您要更改值,很多人只需将该字段设为var。或者,如果您使用的是案例类,您可以使用copy 创建具有更新值的新对象,或者您可以通过反射更新值。

    【讨论】:

    • 先生,可以用您提到的最后一个主题的示例来完成您的问题,以便我可以将您的答案标记为正确吗?如果他们一次在这里找到所有信息,它将对其他人有所帮助(它也会对我有所帮助:])。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    相关资源
    最近更新 更多