2017-02-13 9 views
2

DeltaSpike에서 @Transactional을 사용하는 메소드가 있지만이 메소드 내부에서 예외를 불문하고 save() 및 commit commit을 호출해야합니다. 나는 expcetion 저장하고 힘 후에 사용하는 경우 DeltaSpike는 다음과 같이, 모든 롤백 :DeltaSpike에서 새 Transacion을 강제 실행하십시오.

@Transacional 
public void method(){ 
save(myBean); 
throw new MyException("THIS IS NECESSARY"); 
} 

그래서 내 ideia은 다음과 같이 다른 transacion 내 빈을 저장하려면 다른 방법을 호출 할 수 있습니다 :

@Transacional 
    public void method(){ 
    save(myBean); 
    throw new MyException("THIS IS NECESSARY"); 
    } 

    @Transacional(REQUIRES_NEW) 
    public void saveHere(Object bean){save(bean);} 

그러나 DeltaSpike에는 REQUIRES_NEW 속성이 없으며 새 거래를 만들 수있는 속성이 없습니다. 내가 어떻게 해 ?

답변

0

나는 아무 방법도 없다고 생각합니다. JTA 1.2 (Java EE 7의 일부)를 사용합니까? 따라서 @javax.transaction.Transactional을 사용할 수 있습니다. 그것은 DeltaSpike에서도 작동합니다.

... 
public @interface Transactional { 
... 

    TxType value() default TxType.REQUIRED; 

    public enum TxType { 
     REQUIRED, 
     REQUIRES_NEW, 
     MANDATORY, 
     SUPPORTS, 
     NOT_SUPPORTED, 
     NEVER 
    } 
} 

내가 JTA를 사용하지 않는 @javax.transaction.Transactional(value=TxType.REQUIRES_NEW)

+0

, DeltaSpike 그냥 CDI를 사용해보십시오. – RonaldoLanhellas

+0

Java EE 7 또는 스프링? jta 의존성은 jpa에 더 많이 속합니다. – jklee

+0

Java EE 7, 스프링을 사용하지 않습니다. – RonaldoLanhellas