如何在Scala Slick中使用枚举? [英] How to use Enums in Scala Slick?
问题描述
我发现这个但是没有问题如何使用它
我应该使用枚举包含3个值定义对象,例如:
mysql列INT(3),其中包含3个值:将它们命名为a,b,c。
$ b $我解决了枚举的问题,以下列方式(以你的价值为例):b 解决方案
pre> } 如果适用于Play 2.1和Play 2.2 ,Slick 1.0.0和MariaDB 5.5(与MySQL相同) Want to map MySQL INT bitmask to Slick. I've found this but have little problem how to use it https://github.com/nafg/slick-additions/blob/master/src/main/scala/scala/slick/additions/Enum.scala Any help how should I define object for i.e. mysql column INT(3) with Enum containing 3 values: lets name them a,b,c here. I solved the problem with Enums in the following way (taking your values for an example): } If works for me in both Play 2.1 and Play 2.2, Slick 1.0.0 and MariaDB 5.5 (same as MySQL) 这篇关于如何在Scala Slick中使用枚举?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋! import play.api.db.slick.DB
import play.api.db.slick.Config.driver.simple._
密封特征MyEnum
案例对象MyEnumA扩展MyEnum
案例对象MyEnumB扩展MyEnum
案例对象MyEnumC扩展MyEnum
对象MyEnumMapper {
val string_enum_mapping :Map [String,MyEnum] =地图(
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._
案例类MyData(
......
enumValue:MyEnum,
.....
)
........ ........
对象MyDataTable扩展表[MyData](< table_name>){
...
def enumValue =列[MyEnum](< field_name>)
.....
.... / *无论你想要什么提升或直接光滑的电话* /
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 */