Hello, I got into this kind of chicken-egg problem related to entity 
versioning: 

There is an entity Course which has a collection of CourseNote.
When adding a CourseNote to the collection I have to obtain a managed instance 
of Course, whose version field is been incremented implicitly when the flush 
occurs (because it is been managed).

And that is the problem because when more than one user are inserting 
CourseNotes to the collection, the second one will get an 
optimisticlockexception at the time he tries to merge his instance of the course

I do need to access the course during CourseNote creation to do some work (so 
entityManager.getReference is not enough) but  that very action is causing the 
course to get managed and involved in the transaction, which I do not want to 
happen.


//validation omited
  | Ticket ticket = (Ticket)entityManager
  |     .createQuery("select t from Ticket t where t.code=#{register.code}")
  |     .getSingleResult();                             
  |                                                             
  | CourseNote courseNote = ticket.getCourse().enroll(user) ;            
  | entityManager.persist(courseNote) ;
  | 
  | //...
  | entityManager.flush() ; 
  | 
  | 


class Course {
  |     public void enroll(User user) {
  |             CourseNote cn = new CourseNote(user,this) ;
  |             if(!getCourseNotes().contains(c)) {
  |                     getCourseNotes().add(c) ;
  |                     usuario.getCourseNotes().add(c) ;
  |                     return c ;
  |             }
  |             throw new IllegalStateException(
  |                     new StringBuilder(50)
  |                     .append("User ")
  |                     .append(user.getId())
  |                     .append(" is already enrolled in the course ")
  |                     .append(this.getId()).toString()) ;
  |     }
  | }
  | 


Please, some advice on this will be very very appreciated 


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

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

Reply via email to