私のケースクラスには、次のような列挙型パラメーターが含まれています。
case class User(role: UserRole.UserRole, name: String)
object UserRole extends Enumeration {
type UserRole = Value
val ADMIN, USER = Value
}
この例のように、このケースをモデル化する方法は?
提供されているコード サンプルは役に立ちます。
私のケースクラスには、次のような列挙型パラメーターが含まれています。
case class User(role: UserRole.UserRole, name: String)
object UserRole extends Enumeration {
type UserRole = Value
val ADMIN, USER = Value
}
この例のように、このケースをモデル化する方法は?
提供されているコード サンプルは役に立ちます。
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 はインデックスとしてネイティブにサポートされるようになりました。