Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвам Enums в Scala Slick?

Реших проблема с Enums по следния начин (вземайки вашите стойности за пример):

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 */ 

}

Ако работи за мен както в Play 2.1, така и в Play 2.2, Slick 1.0.0 и MariaDB 5.5 (същото като MySQL)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Колоната се актуализира, така че да съдържа позицията на реда

  2. Колона за актуализиране на MySQL от друга колона в същата таблица

  3. Вместо тригери в mysql

  4. Пребройте колко реда имат една и съща стойност

  5. MySQL/Hibernate - Как да отстраня грешки в MySQL пул връзка, която продължава да отпада?