问题标签 [play-slick]

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 投票
2 回答
8710 浏览

scala - 在 Slick 2.0 中插入后返回 AutoInc ID

为了这个问题的答案,我已经到了天涯海角。slick 2.0 上没有太多信息。下面是我的 Addresses 模型的代码,我将如何让方法 create 在插入后返回 id?

谢谢!

0 投票
2 回答
6510 浏览

playframework - 在测试模式下使用 flyway 播放:未找到模式“公共”

我在开发和生产模式下(成功地)使用了 flyway-play 插件。我也想在测试模式下使用它。文档说,它在测试模式下自动运行迁移。

我使用 scala 测试,我的测试用例被包装在一个假应用程序中

运行测试用例时,自动迁移失败并显示“Schema public not found”:

这个错误到底是什么意思?为什么它使用公共模式?我的数据库配置定义了“db.default”,而不是“db.public”。什么是公共架构?我没有在任何地方定义它。

关于如何使测试用例运行(或至少更进一步)的任何想法?

编辑

我发现提示(与 Flyway / Spring 和 H2 嵌入式数据库的架构相关问题)不要在 h2 db url 中使用 MODE=MySQL。不幸的是,我似乎需要它来光滑。如果我不使用它,我会得到

所以 slick 似乎使用 H2 不支持的 SQL 命令,没有 MODE=MySQL (或者我在这里错了吗?)

使用

导致与不存在 MODE=MySQL 时相同的错误(所以正是上面框中显示的错误)

0 投票
1 回答
579 浏览

playframework - Slick:在测试用例中自动生成 H2-DDL

我在我的应用程序和 dev/prod 中使用 slick 2.0.0,它工作正常。

在测试模式下,我想自动生成一个 H2 数据库(从光滑的表定义中)并将其用于我的测试用例。我使用 scalatest 2.0。

用于测试的数据库定义(application.conf)如下

在测试用例开始时,我调用

(在测试模式下,Slick.db 指向来自 play-slick 插件的 DB("test"),所以它只需要在 db.test 中的 application.conf 中定义的 DataSource)

运行测试用例时,我得到以下输出:

所以它肯定会创建表并访问同一个表(尽管是大写的)。案例有问题吗?不要这么想。我怎样才能使这项工作?

如果大小写有问题,有没有办法告诉 slick 生成或使用具有相同大小写的表?

0 投票
2 回答
1427 浏览

slick - 无法访问 Slick 查询的删除方法

这是非常非常非常令人沮丧的。一段时间以来,我一直在尝试使用 Slick,但障碍不断出现。Slick 的概念确实很棒,但是学习起来非常困难,而且不像 Scala,它没有“初学者”、“中级”和“高级”的风格,各个阶段的人都可以轻松使用它。

我正在使用 Play-Slick (Slick 2.0.0) https://github.com/freekh/play-slick,遵循其 Multi-DB cake 示例:https ://github.com/freekh/play-slick/tree /master/samples/play-slick-cake-sample/app

出于某种原因,首先,ddl不属于TableQuery,不像文档中的声明:“TableQuery 的 ddl 方法创建 DDL”。这通过 scaladoc 显示:http ://slick.typesafe.com/doc/2.0.0/api/#scala.slick.lifted.TableQuery那里没有ddl方法。

其次,我slick.lifted.Query无法生成delete方法。它适用于list,但不适用于delete

这行不通……然后我尝试了:

嗯……因为 Slick 使用了一个非常复杂的(至少对新手来说)隐式类型转换系统,我真的不知道出了什么问题。

0 投票
0 回答
494 浏览

postgresql - 使用 Slick 2 连接不同数据库中的表(使用自动生成的数据模型)

我有一个 Scala/Play 应用程序,我需要使用 Slick 2 在同一台服务器上连接来自 2 个不同 PostgreSQL 数据库的表。数据库很大,所以我不手动为我的表创建类,我使用Slick 2 模式代码生成器,因此,如果需要进行更改,则必须使用代码生成器。

而不是像这样在conf中定义我的db url

我想这样做:

然后我的方法看起来像这样:

如,连接到服务器,而不是特定的数据库,这样我就可以使用相同的连接处理多个数据库。这可能吗?我已经在 Slick Plain SQL 中使用了这种方法,并且效果很好。附带问题:这会对性能产生一些负面影响吗?

如果我想完成的事情是可能的,请你给我一个简单的例子。如果这是不可能的,我有什么选择?谢谢。

我的堆栈:

  • 斯卡拉 2.10.3
  • 玩2.2.2
  • 光滑 2.0
  • PostgreSQL 9.3.3
  • 爪哇 8
0 投票
2 回答
1808 浏览

scala - 播放流畅的会话连接超时

我在使用 Slick 2.0.1 和 play-slick 0.6.0.1 进行会话和连接处理时遇到问题

错误是

我有一个游戏基础控制器特性,用于在一个地方设置显式会话

然后是使用显式会话对 UserService 进行简单调用的 /list 操作:

我已经删除了所有异步操作,所以我认为这个问题不会与类似问题重复:Play slick and Async - 这是一个竞争条件吗?Scala Play 2.2 Slick 1.0.1 - future { Try {...} } 等待免费可用连接时超时

重新加载操作大约 10 次后会出现此问题。

显然,我在 slick 的会话处理中做错了 - 在 playframework 中有没有 slick 2 会话处理的好例子?什么是最好的做法?

编辑:问题的一个可能来源可能是我用来保存 TableQueries 的对象

如果这可能是问题的根源,那么放置这些参考资料的好地方是什么?对象的主要原因是在表定义的外键中引用这些实例(类似于http://slick.typesafe.com/doc/2.0.1/schemas.html#constraints

编辑:这是 findByEmail 的代码 - 但我认为这并不重要。在所有查询中似乎都是相同的行为和问题。

我会感谢任何指向正确方向的提示。

0 投票
1 回答
50 浏览

playframework-2.2 - 使用 slick 2.0 引用多个表的最佳方法是什么?

我有这些表:USERS、USER_ROLES、ROLES、PERMISSIONS、ROLE_PERMISSIONS

我正在实施:

所以,如果我要为这个函数编写查询,它会像这样:

其中 M 是给定的用户 id,然后我会通过他们的 id 查找每个角色并返回 Role 对象,或者我会使用连接,但这在这里不相关。

那么我的 UserRole 模型是什么样的:

正如预期的那样,retrieveRoles 返回一个 UserRoles 列表,但我想要一个角色列表,因此我必须编写另一个查询,该查询将采用 UserRole.roleID 并在每个返回的 UserRole 的角色表中找到它。这是很多查询,我觉得有一种方法可以在一个查询中执行此操作。Slick 专家有什么帮助吗?

0 投票
0 回答
281 浏览

scala - Slick 2.0 - 通用枚举映射器

我在 Play 应用程序中从 Slick 1.0 升级到 Slick 2.0 时遇到问题。

在我的应用程序中,我有一些用户定义的类型示例:

和 slick 1.0 的通用映射器:

迁移到 Slick 2.0 后,新的映射器不起作用:

编译器说:

无法为 trait 定义 ClassTag 类型。有人知道如何解决吗?

我为此准备了示例应用程序: https ://github.com/mgosk/slick-test

0 投票
1 回答
593 浏览

playframework - 将 MySQL 复制驱动程序与 Slick/Play 一起使用

我将 Slick and Play 与 play-slick 插件一起使用,但我无法确定是否可以com.mysql.jdbc.ReplicationDriver与它们一起使用。我想使用该驱动程序的主/从功能。仅使用 Slick 时,似乎就像将驱动程序作为参数传递给 " forUrl" 方法一样简单,但 play-slick 创建其连接的方式不同。我已经通过源代码试图弄清楚发生了什么,但我发现是空的。有人知道这是否可以做到吗?

PS:这是我目前的配置:

当我查看 Slick 源代码时,它的驱动程序似乎只是定义了如何构造数据和查询,并且没有包含任何有关实际连接的内容,所以我假设我能够告诉 play-slick 使用该驱动程序来实现 slick和 JDBC 的复制驱动程序

更新:所以上面的配置实际上似乎使用了正确的驱动程序,问题是我需要申请Connection.readOnly(true)发生的每个数据库操作,如here所述。我不确定 Play 如何管理其连接,有没有办法可以做到这一点?

更新 2所以我在播放框架的源代码中找到了它获取 JDBC 连接的位置,但我不确定如何向该进程添加任何内容。我是否必须分叉整个框架才能完成此任务,还是有更明智的方法来做到这一点?

0 投票
2 回答
426 浏览

scala - SLICK:如何在另一个查询中使用查询结果?

我想执行以下操作:

我想返回一个用户列表,首先按用户“关注”的人排序,其次是一些额外的分数。但是,我在下面编写的以下代码不起作用,因为资助者是提升的 Slick 类型,因此从未在列表中找到。

所有帮助表示赞赏!