【发布时间】:2012-01-01 17:15:30
【问题描述】:
我有一个用@Transactional 注释的方法。我从我的 Oracle DB 中检索一个对象,更改一个字段,然后从该方法返回。我忘了保存对象,但发现数据库无论如何都会更新。
应用程序上下文
<tx:annotation-driven />
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
我的方法
@Transactional
public void myMethod(long id) {
MyObject myObj = dao.getMstAttributeById(id);
myObj.setName("new name");
//dao.update(myObj);
}
我的问题是为什么 MyObject 会被持久化到数据库中?
【问题讨论】:
-
因为框架检测到对象的值发生了变化并为你保存了
-
不调用persist方法?我该如何预防?我什至抛出了一个异常,它仍然存在?
-
不,如果您抛出异常,它将不会持续存在。而且你可以控制它,你只需要阅读文档并学习如何使用框架。
-
约翰。你是如何解决这个问题的。我也有同样的问题
标签: java hibernate spring transactional