我正在使用 spring mvc 3.2 和 hibernate 3.6.3 构建 Web 应用程序 我正在我的 DAO 类中扩展 HibernateDaoSupport 类。现在我想使用 session.update() 更新一个实体,其中我从 hibernateDaoSupport 方法 getSession() 获取 session 。我也在这方面使用事务。 但提交事务后,更新并未反射(reflect)在数据库中。但是如果我在提交之前使用 session.flush() ,那么它就会得到反射(reflect)。据我所知, transaction.commit 在提交之前调用刷新,那么为什么它不更新记录。我没有在我的应用程序上下文中使用任何事务管理器,那么事务是如何由 hibernateaosupport 管理的。当我的应用程序中打开一个新 session 时,因为 getSession 方法检查当前事务中的 session ,如果发现,则返回其他新 session 。这意味着是否会在每个 http 请求中打开一个新的 hibernate session ?
我的 Dao 代码是 -
public Map<String, Object> addImmunizationCard(Box box,
Map<String, Object> dataMap) {
Session session = (Session) getSession();
Map<String, Object> map = new HashMap<String, Object>();
Transaction tx = null;
try {
tx = session.beginTransaction();
MasBed bed = (MasBed)session.get(MasBed.class, new Integer(1101));
System.out.println(bed.getBedNo());
bed.setBedNo("Amit Das");
session.update(bed);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}
return map;
}
最佳答案
默认的刷新模式是AUTO,这意味着它有时会在查询执行之前刷新。当刷新模式设置为 COMMIT 时,刷新会在事务提交之前完成。
请参阅https://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/FlushMode.html
关于java - 数据的 session.update() 或 session.save() 没有反射(reflect)在数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43535878/