【发布时间】:2019-04-16 09:04:50
【问题描述】:
我最近遇到了一个问题,即在执行本机 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 中读到的内容相反,其中指出
会话 API 将在执行时自动触发刷新 本机查询。
我可能会错过什么?
【问题讨论】: