首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用squeryl存储case对象

用squeryl存储case对象
EN

Stack Overflow用户
提问于 2012-11-04 21:49:41
回答 2查看 1K关注 0票数 3

如何使用squeryl存储用例对象?我有一个Account对象,它有一个permission类型的Permission字段(定义为一个密封特征)。我还有两个案例对象(管理员和NormalUser)从权限扩展。如何使用Squeryl持久化Account类。示例代码如下:

代码语言:javascript
复制
sealed trait Permission
case object Administrator extends Permission
case object NormalUser extends Permission

case class Account(
        id: Long, 
        email: String,
        permission: Permission
) extends KeyedEntity[Long]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-06 05:11:38

根据我的评论展开,如果您使用自定义类型来检索权限类型,以便它作为整数(在下面的示例中为1和0)保留在数据库中,则可以覆盖unapply方法来查找案例对象,并且模式匹配应该可以正常工作。我想像下面这样的东西应该行得通:

代码语言:javascript
复制
class Permission(identifier:Int) extends org.squeryl.customtypes.IntField(identifier) {
  self: CustomType[Int] =>

  private lazy val permissions = 
    List(Administrator, NormalUser).
      map(p => p.value -> p).
      toMap

  def unapply = permissions.get(value)
}

case object Administrator extends Permission(1)
case object NormalUser extends Permission(0)

然后,您应该能够使用您的实体定义将权限直接存储在代码中:

代码语言:javascript
复制
case class Account(
        id: Long, 
        email: String,
        permission: Permission
) extends KeyedEntity[Long]

您可以将permission字段直接设置为AdministratorNormalUser,您还应该能够进行模式匹配,如下所示:

代码语言:javascript
复制
account.permission match {
  case Administrator => ..
  case NormalUser => ..
}
票数 4
EN

Stack Overflow用户

发布于 2012-11-04 22:34:54

您需要定义模式:

代码语言:javascript
复制
 object Library extends Schema {

     val authors = table[Author]("AUTHORS")
 }

然后插入实体:

代码语言:javascript
复制
 authors.insert(new Author("Herby Hancock"))

http://squeryl.org/schema-definition.html

http://squeryl.org/inserts-updates-delete.html

为了存储权限,它必须继承org.squeryl.customtypes包中CustomType的一个子类型,并将org.squeryl.customtypes.CustomTypesMode._导入到定义语句的作用域。有关详细信息,请阅读此处的自定义类型部分:http://squeryl.org/schema-definition.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13219104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档