[SEAM] seam的一个回滚问题

CarlKing 2009-09-01

  一:执行    方法A----->对实体E1进行操作(增、删、改)        假设方法A public void a(){}

 

  二:不执行 方法B----->回滚实体E1                                      假设方法B public void b(){}

 

   也就是说,有2个方法,只有对方法B执行完后,才真正的对E1进行持久化操作 (执行顺序始终是 A->B )

 

   高手出来讨论一下如何实现?

 

yangbo 2009-09-01
我的解决方案:
*使用seam managed persistent context 加 手工flush(FlushModeType.MANUAL)
* 示例代码如下:
@In EntityManager em; //a Seam-managed persistence context
@Begin(flushMode=MANUAL)
public void beginATransaction() {
  claim = em.find(Claim.class, claimId);
}
public void useA() {
   a();
   if(//some condition) {
     b();
   }else{
     // 不持久化
   }
}
@End
public void b() {
  em.flush();
}
Global site tag (gtag.js) - Google Analytics