-->
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.  [ 7 posts ] 
Author Message
 Post subject: composite-id, many-to-one mit zusammengesetztem foreign key?
PostPosted: Tue Nov 29, 2005 11:44 am 
Newbie

Joined: Sat Nov 05, 2005 5:55 am
Posts: 9
Hallo zusammen,

ich hoffe ihr könnt mir helfen.
Ist mit hibernate folgendes möglich?
Ich hab 2 Tabellen.
Die eine hat einen zusammengesetzten primary key.
Die andere hat einen zusammengesetzten primary key, bei dem ein Teil der Fremdschlüssel von der Tabelle a ist.

Also:
create table a (id INT NOT NULL, id2 INT NOT NULL, PRIMARY KEY (id, id2));
create table b (id INT NOT NULL, id2 INT NOT NULL, id3 INT NOT NULL, PRIMARY KEY(id, id2, id3), FOREIGN KEY (id, id2) REFERENCES a(id, id2));

das hibernate mapping fuer a würde bei mir so aussehen:
<class name="A" table="a">
<composite-id>
<key-property name="id"/>
<key-property name="id2"/>
</composite-id>
</class>

aber ich weis nicht wie das mapping für table b aussehen müsste.
es gibt ein <key-many-to-one> element aber wie sieht das bei mehreren spalten aus?

<class name="B" table="b">
<composite-id>
<key-many-to-one name="a" class="A" column="????"/>
<key-property name="id3"/>
</composite-id>
</class>

kann ich bei den column mehrere spalten oder sowas angeben? muss ich irgendwie mit der datenbank tricksen? ein constraint oder so?


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 29, 2005 11:45 am 
Newbie

Joined: Sat Nov 05, 2005 5:55 am
Posts: 9
hoffe mir kann jemand helfen.
vielen dank schon mal im vorraus.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 29, 2005 11:51 am 
Senior
Senior

Joined: Mon Aug 22, 2005 5:45 am
Posts: 146
wie wäre es damit:

<class name="A" table="a">
<composite-id name="aID">
<key-property name="id"/>
<key-property name="id2"/>
</composite-id>
</class>

<class name="B" table="b">
<composite-id>
<key-many-to-one name="aID" class="A" />
<key-property name="id3"/>
</composite-id>
</class>

_________________
Please don't forget to give credit, if my posting helped to solve your problem.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 29, 2005 12:32 pm 
Newbie

Joined: Sat Nov 05, 2005 5:55 am
Posts: 9
hm ok. kann ich mal probieren.

aber woher weiß hibernate wie die 2 spalten der tabelle b heißen? muessen die dann genauso heißen wie die des primary keys aus tabelle a?


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 29, 2005 4:01 pm 
Regular
Regular

Joined: Sat Nov 05, 2005 5:33 am
Posts: 70
Location: Linz, Austria
Falls der Tip von axisMundi nicht funktioniert (ich würde es cool finden, wenn es ginge), versuch mal das column-Element:
Code:
<key-many-to-one name="aID" class="A" >
    <column name="" />
    <column name="" />
</key-many-to-one>


Ungetestet. Funktioniert bei normalem many-to-one so.

_________________
hth,
Heinz
Don't forget to rate if this helped


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 29, 2005 4:35 pm 
Expert
Expert

Joined: Tue Oct 05, 2004 9:45 am
Posts: 263
ich persönlich habe in solchen Situationen (mal ganz abgesehen davon, dass Du, wenn Du die Change hast, hier lieber auf den zusammengesetzten Schlüssel verzichten solltest) auf das "key-many-to-one" verzichtet und die Primärschlüssel "normal" definiert.

Die Relation zwischen beiden Klassen würde ich dann mit einem normalen "many-to-one" mappen. Dabei dann bitte aber nicht das "insert=false update=false" vergessen!

gtx
curio


Top
 Profile  
 
 Post subject:
PostPosted: Thu Dec 01, 2005 8:35 am 
Newbie

Joined: Sat Nov 05, 2005 5:55 am
Posts: 9
Also im Moment sieht es danach aus, als würde es mit den Unterelementen <column> beim Element <key> oder <set> funktionieren.
Hab allerdings im Moment noch ein anderes Problem (eine Exception, irgendwas mit transient Object und flush session).

Danke euch allen und falls es funktioniert lass ich nochmal was hören hier (für alle anderen)


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 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.