繁体   English   中英

Hibernate Session 在本机 sql 查询之前没有被刷新

[英]Hibernate Session not getting flushed before native sql query

我最近遇到了一个问题,即在执行本机 SQL 查询之前,休眠会话没有被刷新。 创建会话的刷新模式是AUTO 对于实体A,代码就像

A a=aDao.getById(session,id);
  a.setB(3);
  ...
   String query = "select count(*) as total from A a where a.b=3";
   session.createSQLQuery(query)
             .addScalar("total", StandardBasicTypes.).uniqueResult();

问题是我在count(*)查询中得到了错误的结果,因为在执行查询之前会话没有被刷新。 如果我做

session.flush();

count(*)查询之前,它工作得很好。 这与我从https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#flushing-auto中读到的内容相反,它指出

Session API 将在执行本机查询时自动触发刷新。

我会错过什么?

实际上,根据提供的文档,它按预期工作。 有两个带有Session示例。 第一个是示例 359。使用 Session 自动刷新本机 SQL并且它有两个断言。 请注意,第二个断言将zero作为预期值进行比较。 和第二个例子是在本机SQL实施例360自动刷新与会话同步,其中第二断言具有one预期的值。 因此,要实现您的预​​期行为,您必须启用如图所示的同步

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM