2015-07-30 5 views
6

यह प्रश्न पूछा गया है और चालाक 1 और 2 के लिए दिए, लेकिन उत्तर चालाक 3.स्कैला स्लिम 3 में enums कैसे कार्यान्वित करें?

How to use Enums in Scala Slick? में पैटर्न का उपयोग करने का प्रयास के लिए वैध नहीं हैं,

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) 
) 
} 

लेकिन MappedTypeMapper स्लिम 1 के बाद से उपलब्ध नहीं है, और MappedColumnType स्लिक् 2 के लिए सुझाया गया है, दस्तावेज here दस्तावेज होने के बावजूद अब उपलब्ध नहीं है।

इसके लिए नवीनतम सर्वोत्तम अभ्यास क्या है?

+0

'MappedColumnType' अभी भी availible है और मैं इसे अक्सर उपयोग चालाक 3.0 – Krever

उत्तर

9

MappedColumnType द्वारा आपका क्या मतलब है अब उपलब्ध नहीं है? यह ड्राइवर के सामान्य आयात के साथ आता है। MappedColumnType का उपयोग कर एक स्ट्रिंग और इसके विपरीत करने के लिए एक enum का मिलान बहुत सीधे आगे है:

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

मेरे बुरा में, मैं अब यकीन नहीं क्यों मैंने सोचा था कि मामला था – kbanman

+0

अंतर्निहित मैपर एनम ऑब्जेक्ट के अंदर स्थित होना चाहिए, नहीं? –

+1

@CedricReichenbach यह सिर्फ एक उदाहरण है। आप जहां भी चाहें इसे रख सकते हैं, बस सुनिश्चित करें कि जब आवश्यक हो तो यह कंपाइलर के दायरे में है। – Roman

संबंधित मुद्दे