...还是等到相关交易提交?
我在这样的循环中使用HQL查询:
tx.begin()
for(...)
{
session.getNamedQuery(...).list()
...
session.save(new MyEntity())
}
tx.commit()
命名查询需要能够查看使用保存调用添加的实体。它会这样工作吗?
答案 0 :(得分:4)
这取决于会话的刷新模式。
您也可以使用session.flush()
可以通过多种方式设置刷新模式 - session.setFlushMode(..)
,entityManager.setFlushMode(..)
或xml配置(org.hibernate.FlushMode
)。
默认值为AUTO
:
有时会在查询执行之前刷新会话,以确保查询永远不会返回失效状态。这是默认的刷新模式。
答案 1 :(得分:0)
尝试一下,如果没有,请调用
session.flush()
将SQL发送到DB。无论如何,在致电
之前不会提交tx.commit()