Java session.save()是否立即插入?
…还是等待关联事务提交 我在循环中使用HQL查询,如下所示:Java session.save()是否立即插入?,java,hibernate,Java,Hibernate,…还是等待关联事务提交 我在循环中使用HQL查询,如下所示: tx.begin() for(...) { session.getNamedQuery(...).list() ... session.save(new MyEntity()) } tx.commit() 命名查询需要能够查看随save调用添加的实体。这样行吗?试试看,如果不行,再打电话 session.flush() 将SQL发送到数据库。无论如何,直到调用 tx.commit() 这取决于会话的刷新模
tx.begin()
for(...)
{
session.getNamedQuery(...).list()
...
session.save(new MyEntity())
}
tx.commit()
命名查询需要能够查看随save调用添加的实体。这样行吗?试试看,如果不行,再打电话
session.flush()
将SQL发送到数据库。无论如何,直到调用
tx.commit()
这取决于会话的刷新模式。 您还可以使用
session.flush()
刷新模式可以通过多种方式设置—session.setFlushMode(..)
,entityManager.setFlushMode(..)
,或者通过xml配置(org.hibernate.FlushMode
)
默认值为AUTO
:
有时会在执行查询之前刷新会话,以确保查询永远不会返回过时状态。这是默认的刷新模式
到目前为止,最容易找到答案的方法是尝试一下它是否有效。