Hallo,
ich habe ein Problem mit den von Hibernate generierten foreign-key-constraints. Einige contraint-Namen sind bei mir 32 Zeichen lang, obwohl Oracle nur 30 Zeichen erlaubt.
Folgende Grob-Struktur mit insgesamt 4 Vererbungs-Hierarchie-Ebenen:
Code:
public abstract class AlleObjekte{
public Long systemId
...
}
(von diesem erben alle Klassen außer "Version", ggfs. über "Zwischenstufen")
Code:
public abstract class VersioniertesObjekt extends AlleObjekte{
public Version aktuelleVersion;
...
}
(von diesem erben alle Klassen, die spezielle Versionierungs-Attribute haben)
Code:
public class Eintrag extends VersioniertesObjekt{
...
}
(von dieser Klasse erben alle Einträge)
Code:
public class SpeziellerEintrag extends Eintrag{
...
}
(spezialisiert Eintrag)
Außerdem:
Code:
public class Version{
public Long nummer; // als ID
...
}
Hibernate version: 3.2
Name and version of the database you are using:Oracle 9i
Tomcat version: 5.5
Vererbungsstrategie: Table per Class
Funktioniert auch soweit alles prima.
Beim automatischen Erstellen der Datenbank ist der foreign-key-constraint-Name allerdings zwei Zeichen zu lang. Deshalb erscheint folgende Fehlermeldung:
Code:
ERROR SchemaExport:274 - Unsuccessful: alter table spezieller_eintrag add constraint FK8C1E17EBB43E62C9846c66e91bda1ca foreign key (aktuelleVersion_nummer) references version
ERROR SchemaExport:275 - ORA-00972: identifier is too long
Ist es tatsächlich so, dass der constraint-Name mit zunehmender Hierarchietiefe immer größer wird?? Bei einer Ebene weniger hat alles funktioniert. Oder gibt es Möglichkeiten, den Namen zu beeinflussen?? (Wenn ich das richtig im Source-Code verstanden habe wird er zusammengesetzt aus: "FK"+HashWert Tabellennamen + HashWert Spaltennamen).
Viele Grüße,
Michael[/code]