sql >> Database teknologi >  >> RDS >> Mysql

Hvordan bruger man Enums i Scala Slick?

Jeg løste problemet med Enums på følgende måde (tager dine værdier som et eksempel):

import play.api.db.slick.DB
import play.api.db.slick.Config.driver.simple._


sealed trait MyEnum
case object MyEnumA extends MyEnum
case object MyEnumB extends MyEnum
case object MyEnumC extends MyEnum

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

import MyEnumMapper._

case class MyData(
 ......
 enumValue: MyEnum,
 .....
)

................

object MyDataTable extends Table[MyData]("<table_name>") {
......
def enumValue = column[MyEnum]("<field_name>")
.....

.... /* whatever lifted or direct slick calls you want */ 

}

If virker for mig i både Play 2.1 og Play 2.2, Slick 1.0.0 og MariaDB 5.5 (samme som MySQL)




  1. Hurtig nem måde at migrere SQLite3 til MySQL?

  2. MySQL Performance Tuning Tips til at optimere databasen

  3. Tidsstempel med en millisekunds præcision:Sådan gemmer du dem i MySQL

  4. Tildel dynamisk filnavn til excel-forbindelsesstreng