-->
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.  [ 4 posts ] 
Author Message
 Post subject: Mapping mit <join>, PK-Problem
PostPosted: Mon Apr 03, 2006 7:17 am 
Beginner
Beginner

Joined: Tue Mar 14, 2006 10:00 am
Posts: 22
Hibernate version: 3.1.3

Hallo Community!
Ich hab folgendes Problem!
Ich habe 3 Tabellen (A,B,C) mit folgenden Beziehungen untereinander.
A - C = 1:n (eigentlich würde 1:1 genügen)
B - C = 1:n (eigentlich würde 1:1 genügen)
C ist also eine Tabelle die gemeinsam benutzt wird. Es gibt nun 2 Geschäftsklassen (A, B). Die Spalten in C sollen in die Klasse A bzw. B gemappt werden, dass wiederrum sollte mit <join> machbar sein. Nun ist es so, dass eine Zeile der Tabelle C entweder von Tablle A oder von Tabelle B referenziert wird (niemals beide gleichzeitig).

Ich hab nun die Tabelle C mit einem PK versehen und mit 2 unabhängigen FK's die nullable sind. Beim mappen hab ich jetzt das Problem, dass der PK in der Tabelle C nicht gesetzt wird (wie auch ist ja nirgendwo definiert, oder hab ich da was nicht verstanden). Es ist eigentlich so, dass ich mit sequencen arbeite, sprich die id's sollten sich selber setzten, tun sie aber nicht (bsp: Oracle, hier muss man seq.nextVal() aufrufen und die id beim insert explizit setzten). Also funktioniert diese Variante nicht.

Nächste Idee wäre ein zusammengesetzter PK aus den FK's. Damit würde ich mir den eigentlichen PK sparen. Haken an der Sache es ist immer ein Wert des zusammengestzten PK null, und das darf nunmal nicht sein :-(

Die letzte möglichkeit (die mir eigentlich von vornherein nicht gefallen hat), wäre gewesen ein eigene Klasse C zu bilden und diese im Mapping zu berücksichtigen. Also das Erstellen, Ändern und Löschen der Daten die die tabelle C betreffen versteckt in den Klassen A bzw. B zu machen. Haken ist. Wenn ich zB. im Konstruktor der Klasse A ein Objekt der Klasse C instanziere und dieses entsprechend dem Property zuweise wird es nicht gespeichert/persistiert (es wird kein instert für die tabelle C generiert/abgesetzt).

Gibt es andere Möglichkeiten/Workarounds wie ich folgendes Problem lösen kann???
Oder gibt es eine Lösung wie ich bei einem <join> Mapping (erste Variante) PK mittels sequencen (also <generator class="native"/>)
einbauen kann.

Zusätzliches Problem:
Anscheinend ist es nicht erlaubt in einer Mapping-Datei (class) den Tag <join> und <subclass> gleichzeitig zu verwenden. Gibts da Workarounds?

danke
Tom


Top
 Profile  
 
 Post subject:
PostPosted: Wed Apr 05, 2006 6:08 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Hallo,

suche mal in der Hibernate reference nach
generator class="foreign"/>
ob Dir das Beispiel vielleicht weiterhilft. Dann müsstest Du aber für A und B die gleiche sequence nutzen.

Gruß Sebastian

_________________
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  
 
 Post subject:
PostPosted: Thu Apr 06, 2006 11:41 am 
Beginner
Beginner

Joined: Tue Mar 14, 2006 10:00 am
Posts: 22
danke für deine antwort
ich werd die möglichkeit im auge behalten, aber eigentlich möchte ich nicht mit den sequences tricksen

tom


Top
 Profile  
 
 Post subject:
PostPosted: Thu Apr 06, 2006 12:21 pm 
Expert
Expert

Joined: Tue Nov 23, 2004 7:00 pm
Posts: 570
Location: mostly Frankfurt Germany
Das wäre sicherlich kein Tricksen mit sequencen. Es gibt keinen Grund für jede Tabelle eine eigene Sequence zu benutzen, wenn man im Bereich normaler Datenmengen arbeitet.

Gruß Sebastian

_________________
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.  [ 4 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.