tim23 wrote:
Nach meiner Meinung nach unterscheidet Hibernate nicht wirklich zwischen Klassen und Interfaces. D.h. man kann alle 3 Strategien verwenden.
Hibernate unterscheidet zwar nicht, aber es gibt eben trotzdem Unterschiede, wie z. B. dass ein Interface nun mal keine Tabelle in der db hat. Daher lassen sich die Beispiele für Klassen leider nicht einfach auf Interfaces übertragen.
Quote:
hast Du eigentlich Dein Mapping schon erstellt oder bist Du noch in der Planungsphase?
Für die meisten meiner Klassen sind die Mappings gemacht, aber bei den Interfaces habe ich so meine Probleme. Ich hab' bereits diverse Versuche nach dem Buch probiert, aber nichts funktioniert. Daher ist Hilfe dringend nötig.
Wenn ich in meiner "Information"-Klasse das Ganze als many-to-one-Beziehung mappe, bekomme ich:
Code:
An association from the table tblInformation refers to an unmapped class: IMedia
Wenn ich IMedia als Klasse mappe, verlangt Hibernate aber die Angabe einer zugehörigen Tabelle, die ein Interface nun mal nicht hat.
Alle implementierenden Klasse in eine Tabelle "tblMedia" speichern ist nicht möglich, da die einzelnen Klassen unabhängig von einander und unabhängig von "Information" existieren und außerdem völllig unterschiedliche Felder haben. Als Beispiel: Für eine Klasse Kontakt, die eine Referenz auf eine Person hält, macht es keinen Sinn, dass die Person in tblMedia gespeichert wird. "Kontakt" interessiert sich nicht für IMedia, sondern einfach nur für "Person", weshalb die Klasse "Person" unabhängig von der Beziehung zu "Information" benutzt werden können muss.
Wenn ich aus dem anderen Buch-Beispiel den any-Tag verwende, gibt es zwar keinen Fehler, aber die media-Referenz wird einfach ignoriert (in die db wird null geschrieben).
Es muss doch eine brauchbare (und den OO-Konzepten entsprechende) Lösung geben!?