hi esteve, suspending a transaction is just supported by jta. since @org.apache.deltaspike.jpa.api.transaction.Transactional shouldn't cover 1:1 what ejbs provide already, it's just not supported. -> if you need it, you can handle the suspend/resume manually (or via an own TransactionStrategy based on BeanManagedUserTransactionStrategy) or you just use ejbs instead.
regards, gerhard http://www.irian.at Your JavaEE powerhouse - JavaEE Consulting, Development and Courses in English and German Professional Support for Apache MyFaces, DeltaSpike and OpenWebBeans 2014-11-13 20:41 GMT+01:00 Esteve Avilés <[email protected]>: > Charlie, > > What I want to achieve is the following over the same EM: > > 1. Start Transaction1 on method_1 > 2. Start Transaction2 on method_1.method_2 > 3. Commit Transaction2 on method_1.method_2 > 4. Commit Transaction1 on method_1 > > What do I have to do? Thanks in advance. I find the use case trivial but > very hard to achieve. > > Regards, > > Esteve > > On Thu, Nov 13, 2014 at 5:32 PM, Charlie Mordant <[email protected]> > wrote: > > > Hi Esteve, > > > > Your question is not easy to understand, as commiting the transaction at > > the end of all @Transactional annotated methods is what your code is > > expected to do. > > > > Here's how this @Transactional annotation works: > > > > * To start a new transaction, annotate a method with @Transactional: the > > transaction will start at the call. > > * To continue the transaction between multiple method calls, annotate all > > the methods you want to be part of the transaction with @Transactional. > > * To commit a transaction, make a call on a method which is not > annotated. > > * To rollback, throw an exception (that is not catched in the chain if > > think). > > > > Regards, > > Charlie > > > > > > 2014-11-13 16:17 GMT+01:00 Esteve Avilés <[email protected]>: > > > > > Gerhard, > > > > > > Thanks for the reply. I don't understand from your reply and > > documentation > > > if I would be able to achieve what I told you in this particular > > > environment. > > > > > > Thanks in advance. > > > > > > Esteve > > > > > > On Thu, Nov 13, 2014 at 9:26 AM, Gerhard Petracek < > > > [email protected]> wrote: > > > > > > > hi esteve, > > > > > > > > if you have one persistence-unit, the interceptor-logic executed for > > the > > > > outermost transactional method will #begin and finally > > #commit/#rollback > > > > the transaction for the UserTransaction provided by the container > (see > > > > BeanManagedUserTransactionStrategy). > > > > > > > > regards, > > > > gerhard > > > > > > > > http://www.irian.at > > > > > > > > Your JavaEE powerhouse - > > > > JavaEE Consulting, Development and > > > > Courses in English and German > > > > > > > > Professional Support for Apache > > > > MyFaces, DeltaSpike and OpenWebBeans > > > > > > > > > > > > > > > > 2014-11-12 22:17 GMT+01:00 Esteve Avilés <[email protected]>: > > > > > > > > > Hi all, > > > > > > > > > > I am using Deltaspike 1.0.3 in a JBoss EAP 6.3 server. We want to > use > > > > > @Transactional annotation to delimiter a transactions. We use JTA > and > > > we > > > > > have set the beans alternative and created extended entity manager. > > > > > > > > > > After setting @Transactional as follows (we first call > > > > > createAllValsForAPromocioValDescompte): > > > > > /** > > > > > * Facade method for createAllValsForAPromocioValDescompte. > > > > > * It first gets the PromocioValDescompte by its Id and then calls > > > > > createAllValsForAPromocioValDescompte > > > > > * @param promocioValDescompteId > > > > > * @throws BusinessException > > > > > */ > > > > > public void createAllValsForAPromocioValDescompte(Long > > > > > promocioValDescompteId) throws BusinessException { > > > > > PromocioValDescompte promocio = > retrieveById(promocioValDescompteId); > > > > > if(promocio != null) { > > > > > updateStatusToInProgress(promocio); > > > > > this.createAllValsForAPromocioValDescompte(promocio); > > > > > } else { > > > > > log.error("PromocioValDescompte no trobat amb Id {} per proces > > creacio > > > > > vals", promocioValDescompteId); > > > > > } > > > > > } > > > > > @Transactional(readOnly = false) > > > > > public void updateStatusToInProgress(PromocioValDescompte > > > > > promocioValDescompte) throws BusinessException { > > > > > > > > > > > > > > > > > > > > promocioValDescompte.setEstatProcesGeneracio(EstatPromocioValDescompte.EN_EXECUCIO); > > > > > promocioValDescompteRepository.saveAndFlush(promocioValDescompte); > > > > > } > > > > > /** > > > > > * Generates all vouchers that will be contained in the > > > > > EmissioVoucherPredefinit > > > > > * @param promocioValDescompte > > > > > * @param emissorVoucher > > > > > * @param tipusVoucher > > > > > * @throws BusinessException > > > > > */ > > > > > @Transactional > > > > > public void > > createAllValsForAPromocioValDescompte(PromocioValDescompte > > > > > promocioValDescompte) throws BusinessException { > > > > > > > > > > log.info("Inici creacio de {} vals per a l'emissio {} i Id {}", > > > > > promocioValDescompte.getQuantitatDemanada(), > > > > promocioValDescompte.getNom(), > > > > > promocioValDescompte.getId()); > > > > > promocioValDescompte.setQuantitatGenerada(0); > > > > > ..... > > > > > > > > > > We see all methods executed in a unique transaction, and database > is > > > only > > > > > updated at the end. > > > > > > > > > > Do we need to set something else? Before that, in a JEE5 env, we > were > > > > > using @Transactional(TransactionPropagationType.REQUIRED) > > > > > and @Transactional(TransactionPropagationType.NEVER) to achieve the > > > same > > > > > objective. > > > > > > > > > > Can anyone help us? > > > > > > > > > > Thanks in advance. > > > > > > > > > > Regards, > > > > > > > > > > -- > > > > > Esteve Avilés > > > > > > > > > > > > > > > > > > > > > -- > > > Esteve Avilés > > > > > > > > > > > -- > > Charlie Mordant > > > > Full OSGI/EE stack made with Karaf: > > https://github.com/OsgiliathEnterprise/net.osgiliath.parent > > > > > > -- > Esteve Avilés >
