Imam Session Bean iz koga generisem web servis. Jedna njegova metoda
treba da bude u transakciji, ona potpuno brise bazu i upisuje nove podatke
u nju. Znaci, potrebno je da se transakcija rollbackuje ako dodje do bilo kakvog
Exepctiona. Prvo sam probao sa tzv. deklarativnim (Container managed)
transakcijama. Za tu metodu sam stavio XDoclet tag:
@ejb.transaction type="Required"
Kada sam pokusao da izazovem rollback desio mi se sledeci Exception:
Code:
ERROR [LogInterceptor] TransactionRolledbackLocalException in method:
public abstract com.ccc.projekat.entity.KolaLocal com.ccc.projekat.entity.KolaLocalHome.create
(int,java.lang.String,com.ccc.projekat.entity.KolaLocal) throws javax.ejb.CreateException, causedBy:
java.lang.IllegalArgumentException: The instance was cascade-deleted: pk=[.21.]
ERROR [LogInterceptor] TransactionRolledbackLocalException in method:
public abstract com.ccc.projekat.entity.KolaLocal com.ccc.projekat.entity.KolaLocalHome.create
(int,java.lang.String,com.ccc.projekat.entity.KolaLocal) throws javax.ejb.CreateException, causedBy:
java.lang.IllegalArgumentException: The instance was cascade-deleted: pk=[.21.]
A transakcija nije rollbackovana.
Posle toga sam probao i sa UserTransaction (Bean managed) i desio se isti exception
jos prije nego sto sam i pozvao transakcija.rollback() (sto valjda znaci da je kontejner
sam pokusao da rollbackuje... nebitno). Uglavnom, u oba slucaja sam ostao sa
praznom bazom, znaci nisu unijeti novi podaci niti su vraceni stari.
Zar transakcije ne bi trebalo da osiguraju da ne dodje do ovakao necega...
ili (sto je vjerovatnije) ja negdje grijesim?
[Ovu poruku je menjao braneiv dana 26.01.2007. u 19:47 GMT+1]