问题标签 [squeryl]

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

scala - 使用 Squeryl 连接数据库

我正在尝试使用 Squeryl 从一个数据库中获取表的内容,并将其附加到另一个数据库中的等效表中。在此过程中必须重新分配主键,但我收到错误NULL not allowed for column "SIMID"。为什么是这样?

更新: 我认为这可能与数据库有关。它们是在使用 JPA/EclipseLink 的 Java 项目中创建的,除了为我的实体生成表之外,它还创建了一个名为 SEQUENCE 的表,大概是用于生成主键。

我发现我可以在 Squeryl 中创建一个全新的表并手动将两个数据库的内容放入其中,从而达到相同的效果。有趣的是,这个新表没有自动生成任何 SEQUENCE 表。所以我猜它归结为 JPA/EclipseLink 是如何生成我的主键的?

更新 2: 根据要求,我将 trace_level_file=3 附加到 url 并且文件在这里:resultsA.trace.dbresultsB.trace.db。B是我认为更有趣的一个。此外,我在这里放置了一个简化版本的数据库,其中删除了不必要的表(相同的数据库用于 resultsA 和 resultsB)。

0 投票
1 回答
453 浏览

scala - 使用 squeryl 自动设置创建和更新日期?

我记得在使用 Lift 的 Record 或 Mapper ORM 时,我看到一个特性会自动添加创建和更新的日期。

问题是,Squeryl 是否有类似的事情来自动设置插入记录的日期/时间,以及不太重要的最后更新日期/时间?

如果没有,是否可以制作一个?

0 投票
0 回答
2733 浏览

sql - 哪个项目更成熟,ScalaQuery 还是 Squeryl?

对我来说,如果要使用功能,它们看起来都非常相似,但是如果不使用它们(还)很难说。所以我有几个问题:

1)它们真的具有可比性(或多或少)吗?
2) 有没有使用其中任何一个的企业或大型开源系统的例子?
3) 我的印象是 Squeryl 有更好的文档,在 ScalaQuery 真正问题的情况下是否缺乏文档?
4) 其中哪个增长更快和/或修复错误更快?
5)它们中的任何一个更容易使用/更有效率吗?

0 投票
2 回答
1654 浏览

database - 在 Squeryl 中设置事务隔离级别

如何使用 Squeryl 设置事务隔离级别?

例如,现在我正在使用 Postgresql,并且需要对特定的单个事务进行可序列化的隔离。我将普通的 Squeryl 和 Squeryl-Record 与 Lift Web 框架一起使用。

其他人当然可能需要针对整个会话(而不是单个事务)的其他数据库的其他隔离级别,所以一般的答案是可取的。

更新:

我最终得到了 Dave Whittaker 代码的修改版本:

问题是,如果事务已经启动,则无法更改隔离级别。对我来说就是这种情况,如果没有回滚,我会得到:

org.postgresql.util.PSQLException:无法在事务中间更改事务隔离级别。

只要我使用 transaction{} 而不是 inTransaction{},我认为立即回滚应该没有害处。

隔离级别应在事务提交或回滚后重置,但在连接返回到连接池之前。我不确定如何做到这一点。但在我的情况下,c3p0 连接池似乎重置了隔离级别,并且每个事务{}都以默认隔离级别开始,即使我自己从未清理过它们。

我不太满意的是发生冲突时的例外情况。我想专门捕获这样的异常并重试事务。但这只是一个通用的运行时异常:

java.lang.RuntimeException:执行语句时出现异常:错误:由于并发更新而无法序列化访问

它包装了另一个异常,不幸的是它也是通用的(org.postgresql.util.PSQLException)。

不完美,但在 Squeryl 希望获得对事务隔离的支持之前,它可以完成这项工作。我将上述代码与 Squeryl 0.9.4 一起使用。

0 投票
1 回答
921 浏览

scala - 使用“使用”的 Squeryl 会话管理

我正在学习 Squeryl 并试图理解“使用”语法,但找不到关于它的文档。

在以下示例中,创建了两个数据库,A 包含单词Hello,B 包含Goodbye。目的是查询 A 的内容,然后附加单词World并将结果写入 B。

预期的控制台输出是Inserted Message(2,HelloWorld)

就目前而言,代码打印Inserted Message(2,GoodbyeWorld),除非在val 结果行的末尾添加了toList 。

即使在using(sessionB)内部进行评估,是否有某种方法可以将结果查询绑定到使用sessionA?这似乎比使用toList强制查询评估并将内容存储在内存中更可取。

更新

感谢 Dave Whittaker 的回答,下面的代码片段在不诉诸“toList”的情况下修复了它,并纠正了我对“使用”和查询运行的理解。

0 投票
2 回答
875 浏览

database - 将 Squeryl 和 H2 数据库用于桌面应用程序的性能问题

我有一个桌面应用程序,将其数据保存在本地 H2 数据库中。我正在使用 Squeryl 连接到数据库。

数据库的大小非常小(大约 10kB)。我遇到了严重的性能问题,并且正在进行大量的磁盘 IO。我只是在读取数据库,因此我希望可以缓存完整的数据;我什至将缓存大小设置为某个值(远高于总数据库大小)。我也尝试禁用锁定但没有结果。

我的程序在数据库上执行了很多小查询;基本上我有一个 SwingTableModel对每个表条目(每行的每一列)进行查询。我将这些调用中的每一个包装到一个 Squeryltransaction块中。

我使用 JVisualVM 创建了一个配置文件,我怀疑以下调用树显示了问题。最上面的方法是从我的代码中读取访问权限。

链接到 JVisualVM 屏幕截图。

问题

我该如何解决这个问题或我做错了什么?不知何故,我希望我应该能够对一个小到可以保存在 1MB 内存以下的数据库进行许多小调用。为什么这个磁盘 IO 会继续,我该如何避免呢?

0 投票
1 回答
758 浏览

scala - 添加 manytoManyRelation 后的顽固 ExceptionInInitializerError

我正在对基于 Play 的应用程序进行简单的身份验证!和斯卡拉。直到最近,简单的身份验证工作得很好,直到我manyToManyRelation在我们的数据库对象中创建了一个。

错误:

错误指向此代码的第 2 行:

对我们的 DB 对象所做的更改是这样的:

我很难过这会产生怎样的影响,因为我们的代码中没有要求每个用户都有一个帐户。有什么见解吗?谢谢。

0 投票
2 回答
6405 浏览

scala - 如何在 Scala 中正确设置对象的值?

我有一个 Scala def,它从 HTTP POST 获取参数并解析数据。我正在从数据库中提取一个“作业”对象(在调试器中验证查询成功,并且参数与它们需要的一样)并且我正在尝试使用新参数更新该作业对象。但是,尝试分配值被证明是无用的,因为作业对象保留了所有原始值。

所有数据库对象都来自 Squeryl。下面的代码:

编辑:在下面添加了类和 Job 对象以帮助在此 Play 中提供上下文!应用程序

我很难过,因为如果我尝试job.name -> name什么都没有发生,如果我尝试job.name = name然后我得到一个 Scalareassignment to val错误。尝试var name而不是val name.

这显然是我的语法问题,处理这个问题的正确方法是什么?谢谢!

更多信息:如果这有帮助,这里是我们 Play 中使用的 Job 类!应用程序:

0 投票
1 回答
625 浏览

mysql - 我可以自动生成 Squeryl 数据对象以反映现有的 MySql 架构吗?

我在 MySql 数据库中有一个现有的 Schema 定义。我使用 MySql Workbench 创建了架构。

我希望从我的 Lift-Scala-Squeryl 代码中访问模式。我知道一种简单的方法是使用 Squeryl 数据对象手动定义模式结构。

是否有一种自动化的方法可以从现有的 MySql 模式中生成 Squeryl 数据对象?

我发现了以下一般问题,但我确信有一种方法可以生成一个简单的结构,虽然不准确,但它可以为手动工作提供一个更好的起点。

谢谢,大卫。

0 投票
1 回答
225 浏览

scala - 玩!@Before、traits 和 Squeryl 抛出关闭连接的问题?

更新的问题经过进一步调试后,我更新了这个问题以更准确地解决实际问题。

我定义了一个特性来进行基本的安全检查,但是每次我想运行数据库查询时都会引发Cannot operate on a closed connection!!!错误。

下面的代码:

getByKey引发数据库错误。在我的控制器中,我将其添加Squeryl为特征,但是如何将其应用到另一个特征中以便我可以继续运行查询?还是我只是没有正确处理这个问题?谢谢。