小编Bar*_*mel的帖子

光滑的codegen和表> 22列

我是Slick的新手.我正在使用Scala,ScalaTest和Slick为Java应用程序创建测试套件.我在测试之前使用slick来准备数据,并在测试之后对数据进行断言.使用的数据库有一些超过22列的表.我使用slick-codegen生成我的架构代码.

对于列数超过22的表,slick-codegen不会生成案例类,而是基于HList的自定义类型和伴随"构造函数"方法.据我了解,这是因为元组和案例类只能有22个字段的限制.生成代码的方式,Row对象的字段只能通过索引访问.

我有几个问题:

  1. 根据我的理解,案例类的22个字段限制已在Scala 2.11中修复,对吧?
  2. 如果是这种情况,是否可以自定义slick-codegen来为所有表生成案例类?我调查了这个:我设法进行override def hlistEnabled = false了覆盖SourceCodeGenerator.但这导致了Cannot generate tuple for > 22 columns, please set hlistEnable=true or override compound.所以我没有能够解除HList的意义.可能是'或覆盖复合'部分,但我不明白这意味着什么.
  3. 在光滑的22列上搜索互联网,我发现了一些基于嵌套元组的解决方案.是否可以自定义codegen以使用此方法?
  4. 如果生成包含> 22字段的案例类的代码不是一个可行的选项,我认为可以生成一个普通的类,它为每列提供了"访问器"功能,从而提供了基于索引的访问的"映射"基于名称的访问.我很乐意为自己实现这一代,但我想我需要一些指针从哪里开始.我认为它应该能够覆盖标准的codegen.我已经使用重写SourceCodeGenerator了一些自定义数据类型.但是,除了这种使用情况下,代码生成的文档并不能帮助我太多.

我真的很感激这里的一些帮助.提前致谢!

scala slick slick-codegen

5
推荐指数
2
解决办法
2207
查看次数

标签 统计

scala ×1

slick ×1

slick-codegen ×1