Hibernate-Version 3.2
Hallo,
ich darf folgende Kleinigkeit in Hibernate abbilden:
public abstract class Vst
{
private Map<Vst, Set<Guelt>> p = new HashMap<Vst, Set<Guelt>>();
...
}
Guelt ist auch eine selbstgebaute Klassen.
Zu Guelt gibt es kein Mapping, soll also in dieses hineingenommen werden.
Was steckt dahinter:
Eine Vst (Vertriebsstelle) gehört zu einer Ober-Vst.
Die Zugehörigkeit kann wechseln und auch wieder zurückwechseln. Die Zugehörigkeitszeiträume sind überschneidungsfrei.
Z.Bsp:
Vst p (Vst Guelt)
----------------------------------------------
01 101 01.01.2000 - 31.12.2001
01.01.2003 - 31.12.2003
102 01.01.2002 - 31.12.2002
01.01.2004 - offen
Mapping-Versuch:
<class name="Vst" table="VST">
...
<map name="p" table="VST_BEZ" >
<key column="CHILD_VST_ID" />
<map-key-many-to-many column="PARENT_VST_ID" class="Vst" />
<composite-element class="java.util.Set">
<nested-composite-element name="xx" class="Guelt">
<property name="von" type="de.bla.Date">
<column name="VON">
</column>
</property>
<property name="bis" type="de.bla.Date">
<column name="BIS">
</column>
</property>
</nested-composite-element>
</composite-element>
</map>
</class>
...
(sorry für de.bla -> verkürzt)
Generiert wird folgendes:
create table stmd.VST_BEZ (
CHILD_VST_ID bigint not null,
VON timestamp,
BIS timestamp,
PARENT_VST_ID bigint not null,
primary key (CHILD_VST_ID, PARENT_VST_ID)
);
Was gibt es meckern:
<nested-composite-element name="xx" class="Guelt">
-> name ist Pflichtfeld, taucht aber nirgends auf
primary key (CHILD_VST_ID, PARENT_VST_ID)
-> ist nicht eindeutig (Eindeutigkeit nur zusammen mit VON bzw VON und BIS)
Wie kann man das korrekt machen ?
Ich habe schon reichlich gestöbert und ausprobiert, aber nichts hat funktioniert.
Natürlich kann man das Java-Modell ändern, aber eigentlich solls so laufen.
Schon mal danke für eure Hilfe.
NoLa
|