I've been trying to solve this issue for a day now. And i think it pretty much 
comes down to a lack of understanding of the life cycle.

I've got a session bean that calls a method on my persistence manager, passing 
it a persistence object called "session".

this method goes through my session persistence object and deletes attached 
elements of it, however it throws a constraint violation when i try to remove 
the SessionRate(s), saying there is a FK constraint on session.sessionRate, 
even though i have removed this relationship by setting session.sessionRate to 
null on my first line.  So even though I have removed the value that is causing 
the constraint violation in the first line, i still get code that is run after 
this causing a constraint violation, therefore nothing gets changed and the 
whole lot gets rolled back. I am wondering if it is because it is all being 
done in the same batch/transaction?? see below.



                em.createQuery("update Session s SET s.sessionRate = 
:sessionRate WHERE s = 
:session").setParameter("sessionRate",null).setParameter("session",session).executeUpdate();
  |             for(SessionPartner sessionPartner:session.getSessionPartners())
  |             {
  |                     for(SessionDepartureLocation 
sessionDepartureLocation:sessionPartner.getSessionDepartureLocations())
  |                     {
  |                             for(SessionArrivalLocation 
sessionArrivalLocation:sessionDepartureLocation.getSessionArrivalLocations())
  |                             {
  | 
  |                                     em.createQuery("delete SessionRate sr 
where sr.sessionArrivalLocation = 
:sessionArrivalLocation").setParameter("sessionArrivalLocation",sessionArrivalLocation).executeUpdate();
  |                             }
  |                             em.createQuery("delete SessionArrivalLocation 
sal where sal.sessionDepartureLocation = 
:sessionDepartureLocation").setParameter("sessionDepartureLocation",sessionDepartureLocation).executeUpdate();
  |                     }
  | 
  |             em.createQuery("delete SessionDepartureLocation sdl where 
sdl.sessionPartner = 
:sessionPartner").setParameter("sessionPartner",sessionPartner).executeUpdate();
  |             }

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4102058#4102058

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4102058
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to