2

私のケースクラスには、次のような列挙型パラメーターが含まれています。

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

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

この例のように、このケースをモデル化する方法は?

提供されているコード サンプルは役に立ちます。

4

1 に答える 1

4

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)

追加の Implicit を定義する必要はありません。Enum はインデックスとしてネイティブにサポートされるようになりました。

于 2016-09-13T05:41:09.743 に答える