我正在尝试存储整数列表,这就是我正在做的事情:
MODEL
case class Score(
scoresPerTime: List[Int]
)
object Scores extends Table[Score]("SCORES"){
def scorePerTime = column[List[Int]]("SCORE_PER_TIME")
//...more code
}
控制器
val form = Form(
Map(
"scoresPerTime" -> list(number)
)(Score.apply)(Score.unapply)
)
我收到一个编译错误:
.... could not find implicit value for parameter tm: scala.slick.lifted.TypeMapper[List[Int]][error] def scorePerTime = column[List[Int]]("SCORE_PER_TIME")
如何解决此问题以输入列表?或者尝试其他选项,如元组,枚举......
答案 0 :(得分:6)
你可以通过定义类型映射器来实现,比如说List [Int]到String,反之亦然。
一种可能性:
implicit def date2dateTime = MappedTypeMapper.base[List[Int], String](
list => list mkString ",",
str => (str split "," map Integer.parseInt).toList
)
我说这是一种可能性因为我没有测试过。不确定它返回列表的事实会破坏Slick。一个可能含糊不清的地方是聚合查询,您需要计算,
的数量,而不是count(field)
(显然是一个)。
但这完全是非关系。关系方式是拥有一个包含两个字段的新表,一个外键引用表SCORES
中的一行,另一个字段引用一个SCORE_PER_TIME
。外键应该是非唯一索引,因此搜索速度很快。光滑的处理非常好。