[Javalist] TransactionAttributeType.REQUIRES_NEW
Tamás Magyar
magyusz at gmail.com
2013. Feb. 3., V, 16:44:24 CET
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<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<http://lists.javaforum.hu/mailman/listinfo/javalist>
>
--------- következ? rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20130203/e3078708/attachment.html>
További információk a(z) Javalist levelezőlistáról