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 >
