[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