-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Frage zu one to many Association
PostPosted: Fri Sep 15, 2006 11:10 am 
Newbie

Joined: Fri Sep 15, 2006 10:51 am
Posts: 1
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!


Top
 Profile  
 
 Post subject:
PostPosted: Sat Sep 16, 2006 4:40 am 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Das hat mit den Transaktionen nichts zu tun.

Du musst erstens die Beziehung setzen, zweitens wenn die Beziehung nicht zum Primary Key geht, musst Du property-ref verwenden.

_________________
Best Regards
Sebastian
---
Training for Hibernate and Java Persistence
Tutorials for Hibernate, Spring, EJB, JSF...
eBook: Hibernate 3 - DeveloperGuide
Paper book: Hibernate 3 - Das Praxisbuch
http://www.laliluna.de


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.