[appengine-java] Re: NoResultException causes rollback transaction why?

2011-03-25 Thread Perun Katana
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?

2011-03-25 Thread lp
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?

2011-03-24 Thread lp
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.