问题标签 [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.
scala - sourceManaged 文件夹中光滑的自动生成模型:如何在控制器中访问它们?
在 play 2.5 中,我使用来自 com.typesafe.slick 的 slick 代码生成器 "com.typesafe.slick" %% "slick-codegen" % "3.1.1" % "compile"
,它工作正常:自动生成的 Slick 数据模型生成到文件target/scala-2.11/src_managed/slick/dao/Tables.scala
中。
我的问题:我如何从 Controller 访问生成的 Models 和 TableQuery 对象,比如说app/controllers/myDAOController.scala
?任何提示或工作示例将不胜感激。谢谢!
scala - 带有 SQLServer 和 dbo 架构的 Slick Codegen
我正在尝试使用slick codegen根据 SQLServer 中的现有数据创建一个 Tables.scala 文件,并具有以下设置:
当我运行命令时,我没有收到任何错误,但会生成一个空的 Tables.scala 文件(数据库中有几十个表):
我的怀疑是 SQLServer 使用 dbo 模式这一事实存在问题,但该模式未在 codegen 调用的任何地方指定(所有表都命名为“dbo..TableName”)。
所以我的问题是:我是否需要在 codegen 配置中的某处指定“dbo”,如果需要,怎么做?
如果答案是不需要做任何事情,那么我如何调试 codegen 显然失败但没有产生错误的事实?
预先感谢您的考虑和回复。
scala - 光滑的代码生成没有给出任何输出
我正在尝试将当前版本的 slick 和 slick-codegen (3.2.0) 与 sqlite 数据库一起使用。当我尝试列出表格时,我得到了正确的名称。但是,当我尝试生成与表对应的类时,我没有得到任何输出。
这有效:
我得到下面的输出:
但是,以下代码,直接以相同的方式运行,不起作用:
意思是,代码运行成功,但我没有看到任何输出文件。有什么我想念的吗?
postgresql - 如何在插入时使 Slick 尊重 DB 列的默认值?
我在带有 Postgres DB 的 Scala Play 应用程序中使用 Slick 3.2 和 codegen。我的每个表都有一个用于 create_time 的时间戳字段,类型如下:TIMESTAMP default (now() at time zone 'utc')
. 我遇到的问题是 Slick 将模型字段生成为createTimestamp: Option[java.sql.Timestamp]
,然后null
在 createTimestamp 为 时为该列插入显式None
。我希望行为将值完全排除在插入语句之外,以便数据库使用其默认值。有没有办法做到这一点?
scala - 通过 slick codegen 导入从另一个项目构建的依赖项时,“对象不是包的成员”
我有一个这样的多项目设置:
kalosgen
生成模型的主要类通过slick-codegen
并将其放置在:
在包中com.kalos.gen
。它还在编译时将 protobufs 编译为 scala 类,但该包按预期位于类路径中。
然后我可以将这些文件从kalosgen
into 导入kalosrpc
,intelliJ 不会抱怨,并且可以完全访问这些文件中定义的类型信息。因此,我运行kalosgen/compile
并按预期生成了包,但是当我跟进时,kalosrpc/compile
我得到:
我试过更改包的名称,但它没有解决任何问题。根据此处提供的信息,我的项目配置似乎正确。
scala - slick 可以从模型中自动在数据库中创建表(生成 SQL 并执行)吗?
我知道 slick-codegen 可以从数据库表中生成 scala 类。我们可以做相反的事情,如果它们在模型中的数据库中不存在,则创建表吗?
scala - Scala Slick - 在表中插入省略一些列并返回新行的主键
对于 scala 项目,我同时使用play-slick
两个play-slick-evolutions
版本,并使用version5.0.0
生成我的数据库类。slick-codegen
3.3.3
我有一个带有一primary key
列的表和一些带有default values
. 我想插入一行而不提及主键列或任何具有默认值的列。理想情况下,此操作应返回已创建行的新主键。
我的问题是生成的代码slick-codegen
似乎只允许插入完整的行,因为它对行使用自己的案例类。这是生成的代码的样子(没有注释):
有了这个生成的代码,我现在可以插入一行并提到整列:
但是我想省略开头的主键和具有默认值的时间戳参数。但是不能做这样的事情。
我在 slick 文档和 Web 中发现了许多类似后一种方法的示例,但它们用于数据库的类确实有一个元组而不是自己的行类。喜欢...
代替
我是否必须slick-codegen
放弃我的项目并自己编写所有类以满足我的需求,还是我的库组合有play-slick
误?或者在插入未记录的内容时是否有一个简单的技巧来省略列?
scala - 使用 Slick 生成的代码的方法 += 的参数过多
我正在一个 Scala 项目中尝试使用 Slick 来访问关系(PostgreSQL)数据库。该项目使用 Scala 2.12.14、Slick 3.3.3 和 Slick Codegen 3.3.3。
我首先创建了一个非常简单的数据库表:
接下来,我运行了 Slick 代码生成器来为我生成Table
和TableRow
类。它们产生了这个 Scala 文件:
据我所知,这似乎是有道理的。
然后我尝试实际使用此模式将记录插入“示例”表:
编译此代码失败:
方法 += 的参数过多 (2): (value: Tables.ExampleRow)slick.sql.FixedSqlAction[Int,slick.dbio.NoStream,slick.dbio.Effect.Write]
有任何想法吗?