问题标签 [slick-codegen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
424 浏览

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

正在开发一个 sbt 插件,它使用Slick 代码生成器在给定数据库的情况下生成 Scala 模型

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

  • 无论如何,我可以在 build.sbt 插件键中动态加载给定路径的 Scala 类?例如,在用户的父 build.sbt 中,她会提供类似这样codegen.override=com.company.project.CustomCodegenerator的内容

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

以下是关于此的完整讨论:https ://github.com/papauschek/play-slick-evolutions-plugin/issues/1

0 投票
1 回答
190 浏览

scala - 如何禁止 slick codegen 在每次编译时创建 dbModels?

我尝试在 Build.scala 中的每个编译上注释自动代码生成,如下所示,但随后我的代码显示错误,因为它无法从以前的编译中引用任何自动生成表模型。

0 投票
1 回答
875 浏览

scala - 自定义 Slick Codegen 在“${container} 特征”之外生成映射案例类?

Slick Codegen 是否可以在 之外生成所有映射的案例类${container} trait ,以便它们不继承其类型?也许完全在另一个文件中,即Models.scala

我得到这个编译错误:

使用Tables#SuppliersRowimport 给出了同样的错误。

SuppliersRow如果我在自动生成的外部手动剪切和粘贴案例类,trait Tables它就可以工作!

0 投票
2 回答
283 浏览

scala - 代码生成后的Scala Slick 3.1.0 StackOverflow错误

我已经开始使用推荐使用的 Slick 框架和代码生成器。我的问题是,在为超过 22 列的表生成代码后(我知道限制,但代码生成器让我很容易克服它),我无法再编译项目了。我收到此错误:

在 Slick 3.1.0 的实际版本中,我搜索了整个互联网并没有找到解决此错误的方法。

0 投票
0 回答
652 浏览

mysql - scala codegen 无法处理 datetime not null 默认值'0000-00-00 00:00:00'?

我想使用最新的 Slick (3.1.1) 分析旧的 mysql 数据库(myisam 引擎)。

但是,在该数据库上运行 slick.codegen.SourceCodeGenerator 会导致错误:

相关表(DDL 代码)如下所示:

什么地方出了错?怎么修?

0 投票
4 回答
2858 浏览

scala - 光滑的代码生成和超过 22 列的表格

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

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

我对此有几个问题:

  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. 在 slick 和 22 列上搜索互联网,我遇到了一些基于嵌套元组的解决方案。是否可以自定义代码生成以使用这种方法?
  4. 如果生成具有> 22个字段的案例类的代码不是一个可行的选择,我认为可以生成一个普通的类,它对每一列都有一个“访问器”功能,从而从基于索引的访问中提供一个“映射”到基于名称的访问。我很乐意自己实现这一代,但我认为我需要一些指示从哪里开始。我认为它应该能够为此覆盖标准代码生成。SourceCodeGenerator我已经为某些自定义数据类型使用了覆盖。但是除了这个用例之外,代码生成器的文档对我帮助不大

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

0 投票
1 回答
463 浏览

oracle - 使用 Slick Codegen 3.1.1 为多个模式生成代码

我需要为不属于我但对它们具有选择权限的模式中存在的表生成 Slick 自定义代码。我正在使用的代码是:

}

build.sbt 包含以下有关 Slick 和 Oracle 驱动程序的详细信息:

当表驻留在用户模式(用户)中时,CustomCodeGenerator 成功生成 Slick 代码,但当表驻留在其他模式中(如上面的 GEO)时不会成功生成 Slick 代码。当表驻留在不同的模式中时,有人可以建议我如何获得为 Oracle 表生成的流畅代码吗?在此先感谢您的帮助。

0 投票
1 回答
261 浏览

scala - Scala Slick codegen 自定义命名

我正在使用 slick codegen 为 myMySql db 生成表定义。如何覆盖 slick 的 codegen 命名约定?它为表查询对象生成以下代码:

我希望它看起来像这样:

PS我看过这个例子:https ://github.com/slick/slick-codegen-customization-example ,但我想知道是否有更简单的方法来实现这个?

0 投票
1 回答
208 浏览

scala - 带有生成表的光滑隐式参数“表”

简单版

导入和使用生成的 Slick 表的首选方式是什么?

详细版本和我尝试过的

Tables.scala我使用 Slick 3.1.1 codegen从 MySQL (MariaDB) 模式生成一个。

Tables.scala以此开头:

使用这些类的最佳方式是什么?根据Slick 文档

该文件包含一个对象表,可以从中导入代码以立即使用。...该文件还包含一个可用于蛋糕图案的特征表。

...我已经尝试过这个例子的变化

每当我引用 ATable 类时,都会出现编译错误:

我什至没有看到tablesTables.scala如何获得使用我生成的 Slick 类所需的一切?

0 投票
2 回答
209 浏览

scala - 如何将自动生成的光滑代码添加到类路径

我使用此处描述的方法生成了源代码

https://github.com/slick/slick-codegen-example/blob/master/build.sbt

此方法有效,现在当我这样做时,compile我可以看到自动生成的 Target.scala 文件已成功编译为 Tables.class

在此处输入图像描述

但在我的源代码中,如果我尝试导入自动生成的类文件。它说cannot resolve symbol demo

在此处输入图像描述