使用hibernate中的运行总计查询

时间:2017-02-03 09:35:11

标签: java mysql hibernate

我想使用hibernate运行类似的查询。我很担心,因为如果我设置@runtot as 0,同时运行的另一个查询可能会得到错误的结果。

SET @runtot:=0; select name, quantity, (@runtot := @runtot + quantity) as runtotal from item where @runtot+quantity <= 20;

1 个答案:

答案 0 :(得分:1)

根据预期用途,这不会有问题。

您的变量@runtot与特定数据库会话相关联,该会话与您的数据库的特定JDBC Connection具有1对1的关系。在任何给定的时刻,Hibernate SessionEntityManager对象也与特定的JDBC Connection相关联。

鉴于SessionEntityManager都不是线程安全的,这意味着你永远不应该处于同一Connection执行你的示例代码不止一次导致变量的状态受到污染。

因此,只要您永远不会在执行线程之间共享SessionEntityManager,您的代码就可以正常工作,而不必担心会有其他执行产生问题。