2017-05-20 27 views
0
WAObservations observation = getHibernateTemplate().get(WAObservations.class,1); 

这里设置一些数据和更新如何防止Hibernate持久性对象更新如果我们将任何数据设置为该对象?

observation.setObservationStatus(Constants.observation_completed); 

新记录将在以下两个依赖表一旦状态更新

WAMicroObservations aMicroObservations = new WAMicroObservations(); 
aMicroObservations.setWaObservationId(observation); 

设置一些相关的微更值来生成状态如果在这里发生任何异常,这两个依赖关系表不会被更新。它很好。但是上面的WAObservations Table会自动更新。

WAChemObservations aChemObservations = new WAChemObservations(); 
aChemObservations.setWaObservationId(observation); 


getHibernateTemplate().save(aMicroObservations); 
getHibernateTemplate().save(aChemObservations); 

如何防止更新WAObservations表如果在执行代码时引发任何异常?

任何帮助,将不胜感激。

在此先感谢!

回答

0

如果不看看真实的业务代码,很难猜测,但我认为你只需要适当地定义事务边界。如果您想采用“全部或全部”方法,请为您的所有操作定义一个常见交易。只有当你所有的代码没有任何异常完成时,修改语句才会被提交。否则,如果发生异常,将发生回滚。

也许看看declarative transaction management

至少使用SessionFactory.getCurrentSession()而不是deprecated HibernateTemplate

+0

感谢您的回复。尽管使用了Transaction,它会自动更新。因为在这里我将数据设置为从DB检索的对象。您理解我的问题 –

+0

也许您可以添加与此事务相关的真实业务。 –

+0

transactionTemplate.execute( 新TransactionCallback(){ @覆盖 公共对象doInTransaction(TS的TransactionStatus){ 尝试{ status.append(Constants.SUCCESS_STATUS); }赶上(例外五){ ts.setRollbackOnly(); status.append(Constants.FAILURE_STATUS); } } }); –

相关问题