如何在幻像dsl中模拟枚举类型?

时间:2016-09-12 22:37:16

标签: scala enums cassandra-2.1 phantom-dsl

我的case类包含枚举参数,如下所示:

case class User(role: UserRole.UserRole, name: String)

object UserRole extends Enumeration {
  type UserRole = Value
  val ADMIN, USER = Value
}

如何在this example中为此案例建模?

提供的任何代码示例都会有所帮助。

1 个答案:

答案 0 :(得分:3)

您需要使用EnumColumn,这是出于这个原因而创建的。如果要将枚举用作键,则还需要使用默认的辅助方法创建基元。

您可以使用两种定义枚举的方式。

object Records extends Enumeration {
  type Records = Value
  val TypeOne, TypeTwo, TypeThree = Value
}

object NamedRecords extends Enumeration {
  type NamedRecords = Value
  val One = Value("one")
  val Two = Value("two")
}

object enum extends EnumColumn[Records.type](this, Records)

在你的情况下,这将是:

object role extends EnumColumn[UserRole.type](this, UserRole)

要将其用作索引,您需要:

implicit val userRolePrimitive = Primitive(UserRole)

更新自Phantom 2.0.0 +

object role extends EnumColumn[UserRole](this)

您不需要定义任何其他含义,现在,Enums本身就是索引。