session.save()是否立即插入?

时间:2011-04-06 21:08:06

标签: java hibernate

...还是等到相关交易提交?

我在这样的循环中使用HQL查询:

tx.begin()
for(...)
{
    session.getNamedQuery(...).list()
    ...
    session.save(new MyEntity())
}
tx.commit()

命名查询需要能够查看使用保存调用添加的实体。它会这样工作吗?

2 个答案:

答案 0 :(得分:4)

这取决于会话的刷新模式。 您也可以使用session.flush()

手动刷新它

可以通过多种方式设置刷新模式 - session.setFlushMode(..)entityManager.setFlushMode(..)或xml配置(org.hibernate.FlushMode)。

默认值为AUTO

  

有时会在查询执行之前刷新会话,以确保查询永远不会返回失效状态。这是默认的刷新模式。

答案 1 :(得分:0)

尝试一下,如果没有,请调用

session.flush()

将SQL发送到DB。无论如何,在致电

之前不会提交
tx.commit()