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

Reply via email to