2016-09-12 20 views
1

我的情況下,該類包含枚舉參數類似如下:如何在幻像dsl中建模枚舉類型?

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

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

如何這種情況下建模爲例子: https://github.com/thiagoandrade6/cassandra-phantom/blob/master/src/main/scala/com/cassandra/phantom/modeling/model/GenericSongsModel.scala

提供的任何代碼示例將會有所幫助。

+0

我看到,IntelliJ Idea在代碼編譯時在下面的行顯示錯誤。 對象角色擴展EnumColumn(this,UserRole){覆蓋lazy val name =「role」} 所以,它的工作原理。 – PainPoints

回答

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) 

更新作爲幻影2.0.0+

object role extends EnumColumn[UserRole](this) 

您不需要定義任何額外的含義,現在Enums現在被支持爲索引。

+1

如果github示例可以使用幻像對所有可能的數據建模場景進行更新,那麼這對我們所有人都會非常有幫助。偉大的工作,謝謝弗拉維亞。 – PainPoints