问题标签 [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.
scala - 是否可以将 sbt testOnly 与 Slick TestKit 一起使用?
当我执行时sbt testOnly *JoinTest*
没有找到测试并显示以下输出,但com.typesafe.slick.testkit.tests.JoinTest
应该已经执行:
scala - 自定义 Slick Codegen 在“${container} 特征”之外生成映射案例类?
Slick Codegen 是否可以在 之外生成所有映射的案例类${container} trait
,以便它们不继承其类型?也许完全在另一个文件中,即Models.scala
?
我得到这个编译错误:
使用Tables#SuppliersRow
import 给出了同样的错误。
SuppliersRow
如果我在自动生成的外部手动剪切和粘贴案例类,trait Tables
它就可以工作!
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 的回答有效(谢谢!),但现在我遇到了另一个问题:
时不时地,代码会因错误而失败:
不会一直发生,但经常发生,我不知道这意味着什么
scala - 合并两个 Slick Futures 然后一起执行
我已经编写了这段代码,我正在尝试组合从单独的 SQL 操作获得的两个期货。
但是当我尝试编译此代码时出现错误
如果我将 populateFuture 嵌套在 setupFuture 的 map 函数中,则相同的代码可以工作。但我不想编写嵌套代码,因为一旦有更多步骤要做,它就会变得非常混乱。
所以我需要一种方法将所有期货组合成一个单一的期货,然后执行它。
编辑:: 我也尝试将这两个动作结合起来
但有错误
java - 我如何将表导入另一个类(/object??),以便我可以在另一个类/对象中对其运行查询?[光滑 3.0][斯卡拉]
我在 a 中定义了两个表
我也在这个特定的对象/类中填写表格。
我想知道如何在另一个对象中调用填充的表,以便我可以同时访问DrugEffect
和Patients
作为一个类访问,然后对表本身运行查询?
我希望我让自己清楚,我真的不知道我在做什么
我所说的运行查询的意思是这样的:
但在不同文件中定义的对象中
scala - 为 Slick DAO 编写单元测试
我写了一个简单的 Slick DAO,我正在尝试为 DAO 编写单元测试
这是我的 DAO 的代码
这是单元测试
现在我的代码编译得很好。但是当我运行单元测试时,activator test
我收到了神秘的错误消息
scala - 无法 MTable.getTables.list
我写了这个非常简单的代码,我在互联网上的很多地方都看到过
但这在运行时给了我一个神秘的错误
scala - Slick Code 中的竞争条件
我在 specs2 中编写了这个光滑的 DAO 及其单元测试。
我的代码有竞争条件。当我运行相同的测试时,我得到不同的输出。
即使在我执行的两个函数中都存在竞争条件 Await.result(future, Duration.Inf)
道
单元测试
当我使用运行相同的代码时,activator test
我在不同的运行中看到 2 种不同类型的输出
有时代码会出现异常
插入的行数 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)
有时第一个函数调用返回 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), 人
我不明白为什么我的代码有这些竞争条件,因为我在每种方法中都阻止了未来。
database - 在 Slick 3 的事务中执行非数据库操作
我无法理解新的 Slick DBIOAction
API,文档中似乎没有很多示例。我正在使用 Slick 3.0.0,我需要执行一些数据库操作以及一些从数据库接收到的数据的计算,但所有这些操作都必须在单个事务中完成。我正在尝试执行以下操作:
types
对数据库(表)执行查询。- 对查询结果做一些聚合和过滤(这个计算不能在数据库上完成)。
- 根据第 2 步中的计算执行另一个查询(
messages
表 - 由于某些限制,此查询必须使用原始 SQL)。 - 将步骤 2 和 3 中的数据连接到内存中。
我希望第 1 步和第 3 步的查询在事务中执行,因为它们的结果集中的数据必须是一致的。
我试图以单子连接方式做到这一点。这是我的代码的过度简化版本,但我什至无法编译它:
for
理解的第一行从types
表中选择数据。- 第二行
for
理解应该对结果进行一些分组和切片,从而产生一个Seq[(Option[String], Seq[String])]
- 第三行
for
理解必须对上一步中的每个元素执行一组查询,特别是,它必须对 . 中的每个值执行单个 SQL 查询Seq[String]
。所以在第三行中,我构建了一个DBIOAction
s 序列。 - 第二步和第三步的
yield
子句zip
s 。types
counts
但是,这种构造不起作用,并给出了两个编译时错误:
我试图DBIOAction
通过 using将第二行包装在 a 中DBIO.successful
,这应该将一个常量值提升到DBIOAction
monad 中:
但是在这段代码中,types
变量被推断为Any
,因此代码无法编译。
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;")
:.