2015-07-30 18 views
6

Bu soru sorulmuş ve kaygan 1 ve 2 için cevap ama cevaplar, How to use Enums in Scala Slick? yılında deseni kullanmaya çalışmak kaygan 3.Scala slick 3'te enum nasıl uygulanır?

için geçerli olmak üzere

object MyEnumMapper { 
    val string_enum_mapping:Map[String,MyEnum] = Map(
    "a" -> MyEnumA, 
    "b" -> MyEnumB, 
    "c" -> MyEnumC 
) 
    val enum_string_mapping:Map[MyEnum,String] = string_enum_mapping.map(_.swap) 
    implicit val myEnumStringMapper = MappedTypeMapper.base[MyEnum,String](
    e => enum_string_mapping(e), 
    s => string_enum_mapping(s) 
) 
} 

Ama MappedTypeMapper görünmüyor kaygan 1'den beri mevcut değil ve kaygan 2 için önerilen MappedColumnType, here belgelenmesine rağmen artık mevcut değil.

Bunun için en iyi uygulama nedir?

+0

'MappedColumnType' hala availible ve ben – Krever

cevap

9

MappedColumnType ile tam olarak ne demek mümkün değil? Sürücünün olağan ithalatı ile birlikte geliyor. Ben düşündüm neden şimdi emin değilim,

object MyEnum extends Enumeration { 
    type MyEnum = Value 
    val A = Value("a") 
    val B = Value("b") 
    val C = Value("c") 
} 

implicit val myEnumMapper = MappedColumnType.base[MyEnum, String](
    e => e.toString, 
    s => MyEnum.withName(s) 
) 
+0

3,0 kaygan Benim kötü sıklıkla kullanılır: MappedColumnType kullanarak bir dize ya da tam tersi bir enum eşleme oldukça yalındır durum buydu. – kbanman

+0

Kapalı mapper, enum nesnesinin içinde yer almalıdır, hayır? –

+1

@CedricReichenbach Bu sadece bir örnektir. İstediğiniz yere yerleştirebilirsiniz, gerektiğinde derleyicinin kapsama alanında olduğundan emin olun. – Roman