Hallo zusammen,
ich benutze MYSQL Datenbank und Hibernate in der Version 3.1.3.
Habe folgendes Objektmodell zusammengestellt :
- eine Position kann mehrere PositionText 's haben
- die 'navigation' von Position zu den PositionText 's soll über den Column Code verlaufen (ist kein Primary key!!!)
Code:
<hibernate-mapping package="com.test">
<class name="Position" table="position" catalog="test">
<id name="id" column="ID">
<generator class="native"/>
</id>
<property name="code" type="string" column="CODE" length="45"/>
<set name="posText" inverse="true" cascade="all">
<key column="code" />
<one-to-many class="PositionText"/>
</set>
</class>
</hibernate-mapping>
<hibernate-mapping package="com.test">
<class name="PositionText" table="positiontext" catalog="test">
<id name="id" column="ID">
<generator class="native"/>
</id>
<property name="code" type="string" column="CODE" length="45"/>
<many-to-one name="position" class="Position" column="code" not-null="true" insert="false" update="false"/>
</class>
</hibernate-mapping>
Die ergebnisse sind richtig wenn ich folgendes mache
Code:
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
Position p = new Position();
p.setCode("Code1");
PositionText pText = new PositionText();
pText.setCode("Code1");
p.getPosText().add(pText);
pText.setPosition(p);
tx.commit();
wenn ich aber follgendes mach kennt die Position ihre PositionTexte nicht mehr obwohl der FK (Code) der gleiche ist und der DB DUmp der gleiche ist:
Code:
Transaction tx = session.beginTransaction();
Position p = new Position();
p.setCode("Code1");
tx.commit();
tx = session.beginTransaction();
PositionText pText = new PositionText();
pText.setCode("Code1");
tx.commit();
meine Frage:
warum kommen meine PositionTexte im zweiten Fall nicht ?
woher 'weiss' Hibernate dass ich die Association Position-> PositionText nicht expliziet gesetzt habe , sonder in zwei verschiedenen Transaktionen in die DB gebracht habe???
Danke!