Hi,
Ich hab hier ein Problem mit dem Befuellen des Join-Tables einer Many-To-Many Assoziation. Beim Einfuegen von neuen Werten auf beiden Seiten der Assoziation wird der Join-Table nicht befuellt.
Das Mapping fuer Media sieht so aus
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 24.08.2006 13:32:08 by Hibernate Tools 3.1.0.beta5 -->
<hibernate-mapping>
<class name="de.zgdv.rostock.ceismedia.hibernate.Media" table="media">
<comment></comment>
<id name="id" type="int">
<column name="id" />
<generator class="native" />
</id>
<set name="keywords" table="media2keyword" cascade="persist,merge,save-update">
<key column="Media_id"/>
<many-to-many column="Keyword_id" class="de.zgdv.rostock.ceismedia.hibernate.Keyword" />
</set>
...
Das Mapping fuers Keyword
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 24.08.2006 13:32:08 by Hibernate Tools 3.1.0.beta5 -->
<hibernate-mapping>
<class name="de.zgdv.rostock.ceismedia.hibernate.Keyword" table="keyword">
<comment></comment>
<id name="id" type="int">
<column name="id" />
<generator class="native" />
</id>
<set name="medias" table="media2keyword" inverse="true" >
<key column="Keyword_id"/>
<many-to-many column="Media_id" class="de.zgdv.rostock.ceismedia.hibernate.Media" />
</set>
Das ganze funktioniert mit bereits in der Datenbank abgelegten Keywords wunderbar, aber wenn waehrend des Einschreibens von Media auch ein neues Keyword eingeschrieben wird fehlt die Verknuepfung. Der Code zum Speichern sieht so aus:
Code:
class Media {
public void persist( Session s )
{
for( Keyword k : keywords )
{
keywords.remove(k);
s.saveOrUpdate(k);
keywords.add(k);
}
s.saveOrUpdate(this);
}
}
Ich hoffe es hat hier jmd. eine Idee, mir sind sie naemlich ausgegangen.
Andreas