问题标签 [slick-3.0]

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 回答
191 浏览

scala - 是否可以将 sbt testOnly 与 Slick TestKit 一起使用?

当我执行时sbt testOnly *JoinTest*没有找到测试并显示以下输出,但com.typesafe.slick.testkit.tests.JoinTest应该已经执行:

0 投票
1 回答
875 浏览

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

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

我得到这个编译错误:

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

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

0 投票
1 回答
2729 浏览

mysql - Slick 3.0(scala)查询在多次运行之前不会返回数据(我认为)

所以我对数据库和 slick 和 scala 非常(非常)新,所以我使用了他们在http://slick.typesafe.com/doc/3.0.0/gettingstarted.html的文档中的示例代码

我的问题是,由于某种原因,我必须多次运行查询才能返回数据。在它返回结果之前,我必须重新运行它至少 3-4 次。我使用 for 循环重新运行查询,它们也不一定每次都给我完全相同的结果。

创建两个表如下:

然后我使用创建这些表

我在两个文本文件中有实际数据,我使用缓冲阅读器对其进行解析。我将所有药物 ID 存储在一个创造性地命名的列表中DrugIds

然后,我开始按以下方式填写表格

我首先填写患者表:

对于 DrugEffects 表,我执行以下操作:

然后我使用以下代码运行查询

这应该只是给我病人表中的所有数据,但它不一定这样做。

有时,我会收到以下错误(但并非总是如此):

如果我运行更复杂的查询,我返回的数据与查询的参数是准确的,但是会出现同样的问题,即结果要么重复,要么不存在,要么不完整(当我多次重新运行查询时次)。

如果可以的话,像我 5 岁一样解释,或者向我指出可以帮助我解决这些问题的资源

编辑:

bjfletcher 的回答有效(谢谢!),但现在我遇到了另一个问题:

时不时地,代码会因错误而失败:

不会一直发生,但经常发生,我不知道这意味着什么

0 投票
1 回答
3283 浏览

scala - 合并两个 Slick Futures 然后一起执行

我已经编写了这段代码,我正在尝试组合从单独的 SQL 操作获得的两个期货。

但是当我尝试编译此代码时出现错误

如果我将 populateFuture 嵌套在 setupFuture 的 map 函数中,则相同的代码可以工作。但我不想编写嵌套代码,因为一旦有更多步骤要做,它就会变得非常混乱。

所以我需要一种方法将所有期货组合成一个单一的期货,然后执行它。

编辑:: 我也尝试将这两个动作结合起来

但有错误

0 投票
1 回答
453 浏览

java - 我如何将表导入另一个类(/object??),以便我可以在另一个类/对象中对其运行查询?[光滑 3.0][斯卡拉]

我在 a 中定义了两个表

我也在这个特定的对象/类中填写表格。

我想知道如何在另一个对象中调用填充的表,以便我可以同时访问DrugEffectPatients作为一个类访问,然后对表本身运行查询?

我希望我让自己清楚,我真的不知道我在做什么

我所说的运行查询的意思是这样的:

但在不同文件中定义的对象中

0 投票
1 回答
628 浏览

scala - 为 Slick DAO 编写单元测试

我写了一个简单的 Slick DAO,我正在尝试为 DAO 编写单元测试

这是我的 DAO 的代码

这是单元测试

现在我的代码编译得很好。但是当我运行单元测试时,activator test我收到了神秘的错误消息

0 投票
2 回答
922 浏览

scala - 无法 MTable.getTables.list

我写了这个非常简单的代码,我在互联网上的很多地方都看到过

但这在运行时给了我一个神秘的错误

0 投票
1 回答
311 浏览

scala - Slick Code 中的竞争条件

我在 specs2 中编​​写了这个光滑的 DAO 及其单元测试。

我的代码有竞争条件。当我运行相同的测试时,我得到不同的输出。

即使在我执行的两个函数中都存在竞争条件 Await.result(future, Duration.Inf)

单元测试

当我使用运行相同的代码时,activator test我在不同的运行中看到 2 种不同类型的输出

  1. 有时代码会出现异常

    插入的行数 100 [info] HelloSpec [info] [info] 这个用例应该 [info] + 应该插入行 [info] [info] 这个用例应该 [info] !返回 100 行 [错误] JdbcSQLException: : Table PEOPLE not found; SQL 语句:[错误] select x2."PERSON_ID", x2."PERSON_FIRST_NAME", x2."PERSON_LAST_NAME" from "PEOPLE" x2 [42S02-60] (Message.java:84) [error] org.h2.message。 Message.getSQLException(Message.java:84) [错误] org.h2.message.Message.getSQLException(Message.java:88) [错误] org.h2.message.Message.getSQLException(Message.java:66)

  2. 有时第一个函数调用返回 0 行,第二个函数调用返回 100 个值

    SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。SLF4J:默认为无操作 (NOP) 记录器实现 SLF4J:有关详细信息,请参阅http://www.slf4j.org/codes.html#StaticLoggerBinder。插入的行数 100 Vector() 0 Vector(Person(100,test100,user100), Person(99,test99,user99), Person(98,test98,user98), Person(97,test97,user97), Person(96 ,test96,user96), 人(95,test95,user95), 人(94,test94,user94), 人(93,test93,user93), 人(92,test92,user92), 人(91,test91,user91) , 人(90,test90,user90), 人(89,test89,user89), 人(88,test88,user88), 人(87,test87,user87), 人

我不明白为什么我的代码有这些竞争条件,因为我在每种方法中都阻止了未来。

0 投票
1 回答
3968 浏览

database - 在 Slick 3 的事务中执行非数据库操作

我无法理解新的 Slick DBIOActionAPI,文档中似乎没有很多示例。我正在使用 Slick 3.0.0,我需要执行一些数据库操作以及一些从数据库接收到的数据的计算,但所有这些操作都必须在单个事务中完成。我正在尝试执行以下操作:

  1. types对数据库(表)执行查询。
  2. 对查询结果做一些聚合和过滤(这个计算不能在数据库上完成)。
  3. 根据第 2 步中的计算执行另一个查询(messages表 - 由于某些限制,此查询必须使用原始 SQL)。
  4. 将步骤 2 和 3 中的数据连接到内存中。

我希望第 1 步和第 3 步的查询在事务中执行,因为它们的结果集中的数据必须是一致的。

我试图以单子连接方式做到这一点。这是我的代码的过度简化版本,但我什至无法编译它:

  1. for理解的第一行从types表中选择数据。
  2. 第二行for理解应该对结果进行一些分组和切片,从而产生一个Seq[(Option[String], Seq[String])]
  3. 第三行for理解必须对上一步中的每个元素执行一组查询,特别是,它必须对 . 中的每个值执行单个 SQL 查询Seq[String]。所以在第三行中,我构建了一个DBIOActions 序列。
  4. 第二步和第三步的yield子句zips 。typescounts

但是,这种构造不起作用,并给出了两个编译时错误:

我试图DBIOAction通过 using将第二行包装在 a 中DBIO.successful,这应该将一个常量值提升到DBIOActionmonad 中:

但是在这段代码中,types变量被推断为Any,因此代码无法编译。

0 投票
1 回答
2180 浏览

scala - Play 2.4 Slick 3.0 - 删除表中的所有行

我正在使用 Slick 3.0 访问 Play 2.4 中的 PostgreSQL 数据库,并且需要一种方法来删除表中的所有行而不删除它。

删除单行有效:

但是我不知道如何在 slick 中实现一个空的 where 子句来删除所有行。(如 PostgreSQL 文档中所见

简单的解决方案db.run(tasks.delete)似乎没有做任何事情,似乎没有可用的truncate功能。

编辑:

db.run(tasks.delete)工作,你只需要等待未来完成。截断表需要一些 SQL db.run(sqlu"TRUNCATE TABLE table_name RESTART IDENTITY;"):.