[jboss-user] [JBoss Seam] - ManyToMany with EntityManager in flush mode manual

torsty do-not-reply at jboss.com
Tue May 29 06:21:23 EDT 2007


Hi, I have got a question in regard to (bidirectional) ManyToMany relations. I have two classes (Job and Skill) that are linked by ManyToMany Association (Skill has the mappedBy attribute).  I executed the following code:


  | // insert new Skill (wrapped in transaction)
  | Skill hibernate = new Skill( "Hibernate" );
  | Skill struts = new Skill( "Struts" );
  | this.getEm().persist( hibernate );
  | this.getEm().persist( struts );
  | 
  | // insert new Job (separte transaction - skill already commited)
  | //--- fetch the already saved Skill
  | Skill hibernateSkill = ( Skill ) this.getEm().createQuery( "from Skill skill where skill.name= :name ")
  | .setParameter( "name", "Hibernate" )
  | .getSingleResult();
  | 		
  | //insert new Job and link to skill (wrapped in transaction)
  | Job webDeveloper = new Job( "Web Developer");
  | webDeveloper.getSkills().add( hibernateSkill );
  | hibernateSkill.getJobs().add( webDeveloper );
  | this.getEm().persist(webDeveloper);
  | 


The insert works fine, when I inject the EntityManager in my Seam conversational Component with @PersistenceContext( type=EXTENDED). The problem occurs when I inject the EntityManager with @In(value="entityManager") and begin the conversation with @Begin(flushMode=FlushModeType.MANUAL ). Then only the Job entity is inserted, but no association to Skill. When updating an already persisted job (just adding a new Skill to the association) everything works fine. The Problem with @PersistenceContext EntityManager is, that the Associations get updated immediaty, when a new Skill is added to a managed Job entity without having to manually persist the job entity. I don't want that behaviour. That's why I would like to use flushMode manual (only works with Seam EntityManager).

I could use a work around, but can anyone explain to me why no associations are inserted when persisting an unmanaged (i.e. new) job entity with the Seam EntityManager (@In annotation) and flush mode manual?
Or am I doing something wrong?

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

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4049244



More information about the jboss-user mailing list