[appengine-java] Re: NoResultException causes rollback transaction why?
Hi, according to the JPA spec, the NoResultException should not cause transaction rollback, but seems some JPA implementations of the JPA violate the rule http://forum.springsource.org/showthread.php?t=43547 I was lazy to test it by myself, but at the forum is a way to force specific exceptions not to cause rollback. I did not test on GAE (sorry, no time, I will leave it in your capable hands) On our project we checked for item count first, but on GAE it would consumate you additional CPU cycles :( Perun On 25 mar, 02:03, lp wrote: > that previous example code was too complex... phew it was a late night > > this a simpler example of the a method that does a rollback when a > NoResultException is thrown. > > even if the exception is handled it doesnt matter the txn is rollback and no > commits are done. > > if the NoResultException is NOT thrown the method commits correctly. > > is this voodoo or something? > > @Transactional( propagation=Propagation.NOT_SUPPORTED) > public void txnMethod( Collection list) throws > ApplicationExecption{ > > for (Iterator iterator = list.iterator(); iterator.hasNext();) > { > Long fbId = iterator.next(); > PositionUser user = null; > final Query query = > em.createNamedQuery(PositionUser.FIND_BY_FB_ID); > query.setParameter("facebookId", fbId); > try { > user = (PositionUser) query.getSingleResult(); > } > catch (NoResultException e) { > log.info( "error occured:" + e.toString() ); > }catch (NonUniqueResultException e) { > throw new ApplicationExecption(e); > } > > if(user!= null) { > user.setAccuracy(5000); > em.merge(user); > } > } > > } -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: NoResultException causes rollback transaction why?
ok this looks like Spring transaction issue. when the @Transactional is removed the NoResultException does not affect the commit. this is f#$$ -lp -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
[appengine-java] Re: NoResultException causes rollback transaction why?
that previous example code was too complex... phew it was a late night this a simpler example of the a method that does a rollback when a NoResultException is thrown. even if the exception is handled it doesnt matter the txn is rollback and no commits are done. if the NoResultException is NOT thrown the method commits correctly. is this voodoo or something? @Transactional( propagation=Propagation.NOT_SUPPORTED) public void txnMethod( Collection list) throws ApplicationExecption{ for (Iterator iterator = list.iterator(); iterator.hasNext();) { Long fbId = iterator.next(); PositionUser user = null; final Query query = em.createNamedQuery(PositionUser.FIND_BY_FB_ID); query.setParameter("facebookId", fbId); try { user = (PositionUser) query.getSingleResult(); } catch (NoResultException e) { log.info( "error occured:" + e.toString() ); }catch (NonUniqueResultException e) { throw new ApplicationExecption(e); } if(user!= null) { user.setAccuracy(5000); em.merge(user); } } } -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.