我使用的是Scala 2.11,Slick 2.1.0-M2,PlayFramework 2.3.1。
我需要将25列表映射到Scala的案例类。
例如我有这个案例类:
case class Test(f1: Long, f2: String, f3: String, f4: String, f5: String,
f6: String, f7: String, f8: String, f9: String, f10: String,
f11: String, f12: String, f13: String, f14: String, f15: String,
f16: String, f17: String, f18: String, f19: String, f20: String,
f21: String, f22: String, f23: Float, f24: Float, f25: String)
我读到可以编写自定义Shape
(proof),但我实现它的任何尝试都失败了。
请帮我把这个案例类映射到表格。
答案 0 :(得分:0)
对于当前的光滑版本,这个问题没有一个很好的解决方案。您可以将一些字段打包到一个案例类中。
请参考此测试用例。
答案 1 :(得分:0)
实际上这可以通过HList
这样来完成
def * = (col1 :: col2 :: .. :: HNil).shaped <> (
{ case x => new YYY(x(0), x(1), ..)},
{ x: YYY => Option(x.col1 :: x.col2 :: .. :: HNil)}
)
我写了一个宏来做映射,你可以看看这个 https://github.com/jilen/slickext
答案 2 :(得分:0)
我有一个与CaseClassShape完全相同但没有22列限制的HListCaseClassShape that works:here。然后,您可以将其映射到您的表格,如下所示:<li ...>
(请参阅配对*示例here)。不确定它是否适用于Slick 2,但可能值得一试。