Nem tűnik túl szépnek, akkor már a külső törlő kódot külön bean-be raknám, amire nem is vonatkozna tranzakció, csak ő hívogatná a tranzakciós függvényeket a DAO-beanen.<br><br>Üdv<br> Zs<br><br><br><br><div class="gmail_quote">
2013/2/3 Zoltán Bernát <span dir="ltr">&lt;<a href="mailto:bernatzoltan@gmail.com" target="_blank">bernatzoltan@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Mar csak egy kerdes: akkor ez az &quot;elegans&quot;/&quot;kovetendo&quot; megoldas, amit<br>
javasoltal?<br>
<div class="im HOEnZb"><br>
Böszörményi Péter &lt;<a href="mailto:zmblevlist@gmail.com">zmblevlist@gmail.com</a>&gt; írta (2013. február 3. 15:20):<br>
</div><div class="HOEnZb"><div class="h5">&gt; Ott rontod el, hogy lokalisan hivod a deletePic metodust. Ilyenkor nem<br>
&gt; jatszik a tranzakcios proxy. Az egyik megoldas, hogy beinjektalod a beanbe<br>
&gt; onmagat, es azon a beanen hivod a deletePic metodust.<br>
&gt;<br>
&gt;<br>
&gt; On Sun, 03 Feb 2013 15:17:45 +0100, Zoltán Bernát &lt;<a href="mailto:bernatzoltan@gmail.com">bernatzoltan@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;<br>
&gt;&gt; Sziasztok!<br>
&gt;&gt;<br>
&gt;&gt; JPA kerdes. Tranzakcio kezeles. A megoldando feladat az lenne, hogy<br>
&gt;&gt; tobb entitast toroljek a DB-bol, de olyan modon, hogy ha valamelyik<br>
&gt;&gt; torles meghiusul (pl foreign key miatt), attol meg a tobbi torles<br>
&gt;&gt; rendben megtortenjen.<br>
&gt;&gt; (azaz egy sikertelen torles ne rollback-elje az egesz procedurat)<br>
&gt;&gt;<br>
&gt;&gt; Ugy gondoltam volna megoldani a dolgot, hogy egy tranzakcioban futo<br>
&gt;&gt; metodusbol ciklusban torlom a kepeket egy masik,<br>
&gt;&gt; TransactionAttributeType.REQUIRES_NEW tranzakcioban.<br>
&gt;&gt;<br>
&gt;&gt; A hibajelenseg az, hogy  ha egy torles nem sikerult a deletePic (Pix<br>
&gt;&gt; picEntity) metodusban(pl ConstraintViolationException miatt. (ami<br>
&gt;&gt; rendben is van)), akkor a metodus kovetkezo hivasanal mar<br>
&gt;&gt; TransactionRequiredException kivetel dobodik szinten a  deletePic (Pix<br>
&gt;&gt; picEntity) metodusban, es igy az amugy torolheto entitast sem sikerul<br>
&gt;&gt; torolni. Azaz ha csak egy entitas is van, amelyik nem torolheto, az<br>
&gt;&gt; osszes torlese meghiusul.<br>
&gt;&gt;<br>
&gt;&gt; Azt gondolom, elvi hibas a megoldasom, meg azt, hogy a<br>
&gt;&gt; TransactionAttributeType.REQUIRES_NEW pont ilyen esetekre lett<br>
&gt;&gt; kitalalva. Hol benazom el? (Hol ertem felre a<br>
&gt;&gt; TransactionAttributeType.REQUIRES_NEW szerepet)?<br>
&gt;&gt; Koszi!<br>
&gt;&gt;<br>
&gt;&gt; @TransactionAttribute(TransactionAttributeType.REQUIRED)<br>
&gt;&gt; public List&lt;Integer&gt; deletePix(List&lt;Integer&gt; ids){<br>
&gt;&gt;     for(Integer id : ids){<br>
&gt;&gt;         ...<br>
&gt;&gt;                     if(deletePic(pixBeanEntity)){<br>
&gt;&gt;                         ... //sikeres torles<br>
&gt;&gt;                     }<br>
&gt;&gt;     }<br>
&gt;&gt; }<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)<br>
&gt;&gt;     private boolean deletePic (Pix picEntity){<br>
&gt;&gt;         try {<br>
&gt;&gt;             em.remove(picEntity); //em az EntitiManager<br>
&gt;&gt;             //org.hibernate.exception.ConstraintViolationException, ha<br>
&gt;&gt; nem megy a torles a foreign key miatt. Ez az elvart viselkedes.<br>
&gt;&gt;             //De: TransactionRequiredException jon akkor is, ha<br>
&gt;&gt;             em.flush(); //entitiManager flush<br>
&gt;&gt;             // itt tovabbi utasitasok vannak, amikre nem kerul a<br>
&gt;&gt; vezerles, ha a fenti flush() kivetelt dobott<br>
&gt;&gt;         } catch (Exception e) {<br>
&gt;&gt;             context.setRollbackOnly();<br>
&gt;&gt;             return false;<br>
&gt;&gt;         }<br>
&gt;&gt;         return true;<br>
&gt;&gt;     }<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Javalist mailing list<br>
&gt;&gt; <a href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a><br>
&gt;&gt; <a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Üdvözlettel,<br>
&gt; Böszörményi Péter<br>
&gt; _______________________________________________<br>
&gt; Javalist mailing list<br>
&gt; <a href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a><br>
&gt; <a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
</div></div></blockquote></div><br>