首页 > Hibernate未调用update自动提交

Hibernate未调用update自动提交

场景时在SSH2下的Service层。

某service中

java...
// 查询事件模板
CommonEvent event = commonEventDao.find(code);

// 模版内容是"${name}登录"
String template = event.getTemplate();

template = template.replaceAll("\\$\\{name\\}", "admin");
event.setTemplate(template);

// 其他service的调用
...

上边DAO的查询:

javapublic CommonEvent find(String code) {
    return (CommonEvent) sessionFactory0.getCurrentSession().get(CommonEvent.class, code);
}

然后service结束后,数据库中的event纪录中的template字段从 ${name}登录 变成了 admin登录,原因在哪里呢?

如果在find查询时使用session.evict(event)将该对象逐出,则不会有脏写的问题。

如果不使用evict方法该怎么处理?


new一个CommonEvent类型的对象event2,把event的属性值copy一份过来,repalceAll后的内容放到event2里去。应该是当前的逻辑代码中,event还是持久态,所以最后提交事务后,把event的内容也更新到数据库了。

【热门文章】
【热门文章】