标签: slick-codegen

sbt插件动态加载用户定义的代码?

正在开发一个sbt插件,它使用Slick代码生成器为数据库生成Scala模型

我当然希望用户覆盖代码生成器,所以我的插件需要支持这个:

  • 无论如何,我可以动态加载一个Scala类,给出build.sbt插件中的路径吗?例如,在用户的父build.sbt,她会提供像codegen.override=com.company.project.CustomCodegenerator看起来是这样的

  • 与上述有关; 自定义codegen可能会使用其他一些库,因此简单的动态类加载可能不够.无论如何,一个sbt插件可以使用该插件继承项目的依赖项?

以下是对此的全面讨论:https://github.com/papauschek/play-slick-evolutions-plugin/issues/1

scala sbt slick slick-2.0 slick-codegen

8
推荐指数
1
解决办法
342
查看次数

光滑的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
查看次数

slick可以自动从模型在数据库中创建表(生成SQL并执行)吗?

我知道 slick-codegen 可以从数据库表生成 scala 类。如果模型数据库中不存在表,我们可以做相反的事情来创建表吗?

scala playframework slick slick-codegen

3
推荐指数
1
解决办法
785
查看次数

标签 统计

scala ×3

slick ×3

slick-codegen ×3

playframework ×1

sbt ×1

slick-2.0 ×1