Ich habe folgende Situation: ich habe ein bestehendes DB-Schema und möchte die DAOs im Projekt mit Hibernate umsetzen. Ich hänge momentan jedoch an eine Stelle fest und weiß nicht so recht, wie ich das Mapping konfigurieren kann, denn die Entities passen nicht ganz dazu.
Das Schema sieht wie folgt aus: http://www.directupload.net/file/d/3790/9rhgq978_png.htm
Dazu würde ich gerne folgende Beans bekommen:
int id;
...
}
class BranchVO {
int id;
Set<LanguageVO> branchLanguages;
...
}
class CustomerVO {
int id;
BranchVO branch;
Set<LanguageVO> customerLanguages;
...
}```
Allerdings bekomme ich das mit den Hibernate-Mappings nicht hin. Gibt es da einen Weg dies zu erreichen?
Ich fange langsam an zu glauben, dass es nicht möglich ist, da man ein paar Einschränkungen aushebelt: z.B. kann man eine CustomerVO Instanz erstellen, die ein LanguageVO anzieht, welches in BranchVO nicht vorhanden ist. In der Datenbank kann man dies jedoch nicht abbilden. Und den Update-Vorgang stelle ich mir etwas tricky vor.
Aber mir fehlt einfach die Erfahrung mit Hibernate, vlt gibt es ja dort Möglichkeiten es zu erreichen, ohne BranchLanguageVO und CustomerLanguageVO zu erzeugen. Für jeden Tipp bin ich dankbar.
Nebenurteil:
in temporär eingeschränkter Situation zu antworten ist generell fraglich,
nach einer Woche ohne besondere zeitliche Relevanz noch viel fraglicher
Hibernate-Version dürfte fast gänzlich egal sein, das SQL-Mapping (dir ja unbekannt) ist klassisch komplex, im Jahr 2010 sicher nicht anders als 1980,
entweder abbildbar oder nicht
das SQL-Modell mal in weniger Bytes als Kopie des Bildes beschrieben:
es gibt in Tabellen Language, Branch und Customer wie die Java-Klassen,
dazu eine Verbindungstabelle Branch-Language wie man sie klassisch kennt,
und ebenso eine Verbindungstabelle Customer-Language,
wobei die Language-Id dieser Verbindungstabelle aber nicht auf Language an sich geht,
sondern auf eine Branch-Language verweist,
solche Verknüpfungen sind sicherlich nicht ausdrückbar mit Hibernate-Mapping-Mitteln