Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để sử dụng Enums trong Scala Slick?

Tôi đã giải quyết vấn đề với Enums theo cách sau (lấy các giá trị của bạn làm ví dụ):

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

}

Nếu phù hợp với tôi ở cả Play 2.1 và Play 2.2, Slick 1.0.0 và MariaDB 5.5 (giống như 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. Ví dụ về MAKEDATE () - MySQL

  2. CẬP NHẬT SQL với truy vấn phụ tham chiếu đến cùng một bảng trong MySQL

  3. Lỗi nghiêm trọng có thể bắt được:Không thể chuyển đổi đối tượng của lớp mysqli_stmt thành chuỗi

  4. Cảnh báo:mysql_query ():đối số được cung cấp không phải là tài nguyên MySQL-Link hợp lệ

  5. không thể truy cập mysql từ dòng lệnh mac