[英]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.