如果我们将任何数据设置到Hibernate持久性对象,如何防止该对象更新?

如果我们将任何数据设置到Hibernate持久性对象,如何防止该对象更新?,hibernate,Hibernate,在此处设置一些数据并更新状态 WAObservations observation = getHibernateTemplate().get(WAObservations.class,1); 更新状态后,将在以下两个依赖关系表中生成新记录 observation.setObservationStatus(Constants.observation_completed); 设置更多与微观观察相关的值。如果这里发生任何异常,这两个依赖关系表不会更新。这很好。但上面的WAObservations表

在此处设置一些数据并更新状态

WAObservations observation = getHibernateTemplate().get(WAObservations.class,1);
更新状态后,将在以下两个依赖关系表中生成新记录

observation.setObservationStatus(Constants.observation_completed);
设置更多与微观观察相关的值。如果这里发生任何异常,这两个依赖关系表不会更新。这很好。但上面的WAObservations表会自动更新

WAMicroObservations aMicroObservations = new WAMicroObservations();
aMicroObservations.setWaObservationId(observation);
如果在执行代码时出现异常,如何防止WAObservations表更新

如有任何帮助,将不胜感激


提前感谢

如果不看一看您真正的业务代码,就很难猜测,但我假设您只需要正确定义事务边界。如果您想采用“全有或全无”的方法,请为所有操作定义一个公共事务。只有当所有代码都毫无例外地完成时,才会提交修改语句。否则,如果发生异常,将发生回滚

也许可以看看


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

谢谢您的回复。尽管使用了事务,但它会自动更新。因为我在这里将数据设置为从DB检索到的对象。希望您理解我的问题可能您可以添加与此事务相关的实际业务。transactionTemplate.execute(new TransactionCallback(){@Override public Object doInTransaction(TransactionStatus ts){try{status.append(Constants.SUCCESS_status);}catch(异常e){ts.setRollbackOnly();status.append(Constants.FAILURE_status);}};我使用上面的一个用于事务。虽然我在事务中提到了回滚,但它没有回滚。请帮助我解决此问题。这与您问题的代码有何关系?也许最好用整个业务流程更新您的问题(包含您所有代码的事务)请以可读的方式格式化。
WAChemObservations aChemObservations = new WAChemObservations();
aChemObservations.setWaObservationId(observation);


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