[Javalist] TransactionAttributeType.REQUIRES_NEW
Gábor Garami
gabor.garami at hron.me
2013. Feb. 3., V, 18:39:18 CET
Mit hasznalsz helyette?
Garami Gábor
E-mail: gabor.garami at hron.me
Tel: +36 20 235 9621
MSN: hrgy at vipmail.hu
Skype: hron84
2013/2/3 Zoltán Bernát <bernatzoltan at gmail.com>:
> Ez ugy tunik valami spring-es huncutsag. Spring nalam nem jatszik.
>
> Tamás Magyar <magyusz at gmail.com> írta (2013. február 3. 16:44):
>> AopContext.currentProxy()
>>
>>
>> 2013/2/3 Böszörményi Péter <zmblevlist at gmail.com>
>>>
>>> Ott rontod el, hogy lokalisan hivod a deletePic metodust. Ilyenkor nem
>>> jatszik a tranzakcios proxy. Az egyik megoldas, hogy beinjektalod a beanbe
>>> onmagat, es azon a beanen hivod a deletePic metodust.
>>>
>>>
>>> On Sun, 03 Feb 2013 15:17:45 +0100, Zoltán Bernát <bernatzoltan at gmail.com>
>>> wrote:
>>>
>>>> Sziasztok!
>>>>
>>>> JPA kerdes. Tranzakcio kezeles. A megoldando feladat az lenne, hogy
>>>> tobb entitast toroljek a DB-bol, de olyan modon, hogy ha valamelyik
>>>> torles meghiusul (pl foreign key miatt), attol meg a tobbi torles
>>>> rendben megtortenjen.
>>>> (azaz egy sikertelen torles ne rollback-elje az egesz procedurat)
>>>>
>>>> Ugy gondoltam volna megoldani a dolgot, hogy egy tranzakcioban futo
>>>> metodusbol ciklusban torlom a kepeket egy masik,
>>>> TransactionAttributeType.REQUIRES_NEW tranzakcioban.
>>>>
>>>> A hibajelenseg az, hogy ha egy torles nem sikerult a deletePic (Pix
>>>> picEntity) metodusban(pl ConstraintViolationException miatt. (ami
>>>> rendben is van)), akkor a metodus kovetkezo hivasanal mar
>>>> TransactionRequiredException kivetel dobodik szinten a deletePic (Pix
>>>> picEntity) metodusban, es igy az amugy torolheto entitast sem sikerul
>>>> torolni. Azaz ha csak egy entitas is van, amelyik nem torolheto, az
>>>> osszes torlese meghiusul.
>>>>
>>>> Azt gondolom, elvi hibas a megoldasom, meg azt, hogy a
>>>> TransactionAttributeType.REQUIRES_NEW pont ilyen esetekre lett
>>>> kitalalva. Hol benazom el? (Hol ertem felre a
>>>> TransactionAttributeType.REQUIRES_NEW szerepet)?
>>>> Koszi!
>>>>
>>>> @TransactionAttribute(TransactionAttributeType.REQUIRED)
>>>> public List<Integer> deletePix(List<Integer> ids){
>>>> for(Integer id : ids){
>>>> ...
>>>> if(deletePic(pixBeanEntity)){
>>>> ... //sikeres torles
>>>> }
>>>> }
>>>> }
>>>>
>>>>
>>>> @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
>>>> private boolean deletePic (Pix picEntity){
>>>> try {
>>>> em.remove(picEntity); //em az EntitiManager
>>>> //org.hibernate.exception.ConstraintViolationException, ha
>>>> nem megy a torles a foreign key miatt. Ez az elvart viselkedes.
>>>> //De: TransactionRequiredException jon akkor is, ha
>>>> em.flush(); //entitiManager flush
>>>> // itt tovabbi utasitasok vannak, amikre nem kerul a
>>>> vezerles, ha a fenti flush() kivetelt dobott
>>>> } catch (Exception e) {
>>>> context.setRollbackOnly();
>>>> return false;
>>>> }
>>>> return true;
>>>> }
>>>> _______________________________________________
>>>> Javalist mailing list
>>>> Javalist at lists.javaforum.hu
>>>> http://lists.javaforum.hu/mailman/listinfo/javalist
>>>
>>>
>>>
>>> --
>>> Üdvözlettel,
>>> Böszörményi Péter
>>>
>>> _______________________________________________
>>> Javalist mailing list
>>> Javalist at lists.javaforum.hu
>>> http://lists.javaforum.hu/mailman/listinfo/javalist
>>
>>
>>
>> _______________________________________________
>> Javalist mailing list
>> Javalist at lists.javaforum.hu
>> http://lists.javaforum.hu/mailman/listinfo/javalist
>>
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
További információk a(z) Javalist levelezőlistáról