我正在开发一个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
我是Slick的新手.我正在使用Scala,ScalaTest和Slick为Java应用程序创建测试套件.我在测试之前使用slick来准备数据,并在测试之后对数据进行断言.使用的数据库有一些超过22列的表.我使用slick-codegen生成我的架构代码.
对于列数超过22的表,slick-codegen不会生成案例类,而是基于HList的自定义类型和伴随"构造函数"方法.据我了解,这是因为元组和案例类只能有22个字段的限制.生成代码的方式,Row对象的字段只能通过索引访问.
我有几个问题:
override def hlistEnabled = false了覆盖SourceCodeGenerator.但这导致了Cannot generate tuple for > 22 columns, please set hlistEnable=true or override compound.所以我没有能够解除HList的意义.可能是'或覆盖复合'部分,但我不明白这意味着什么.SourceCodeGenerator了一些自定义数据类型.但是,除了这种使用情况下,代码生成的文档并不能帮助我说太多.我真的很感激这里的一些帮助.提前致谢!
我知道 slick-codegen 可以从数据库表生成 scala 类。如果模型数据库中不存在表,我们可以做相反的事情来创建表吗?