Hibernate: Many-To-Many nur eine bestimmte Spalte

Zenic

Mitglied
Hallo,

ich habe folgende Datenbankstruktur:
Movies m - Movietype - n Genres (beinhaltet nur einen eindeutigen Namen)

Im Model ist das ganze so aufgebaut, dass die Klasse Movie eine Collection<String> der Genres hält. Für die Genre Tabelle gibt es daher keine eigene Klasse, sondern es soll lediglich der Name (String) des Genres in der Collection gespeichert werden.

Gibt es eine Möglichkeit dies mit XML Files so zu mappen, dass nur eine Spalte (Genrename) der Genres Tabelle in das Model übergeht.

Das ganze scheint von Programmiererseite evtl. falsch designed zu sein, aber von Datenbankseite ist das denke ich korrekt.

danke
Zenic
 
In JPA heißt das, was Du suchst ElementCollection. Bei annotationsbasiertem Mapping wird dazu @ElementCollection benutzt. Bei Hibernate-XML nimmst du den gewünschten Collectiontyp (z.B. <set name="genres">) und gibst dann bei Element den Typ String an. Nähere Infos gibts hier: Chapter*6.*Collection mapping
 
Bin leider erst jetzt dazu gekommen mir das anzusehen, danke hat funktioniert.

Nun hat sich aber ein neues Problem bzw. eine Frage aufgetan. Zur Veranschaulichung nehme ich ein ähnliches Beispiel wie bei Frage 1.
Ich habe 2 Tabellen (Movies/Genres) die über eine 1:n Beziehung verknüpft sind, in Java ist dies mit zwei Klassen abgebildet, wobei die Movie Klasse eine Collection mit den Genrenamen als String hält.

Bei meinen Tests werden Movie Objekte erstellt und anschließend in die DB gespeichert. Ich habe nun erwartet, dass nicht nur die Attribute der Movieklasse in die DB geschrieben werden, sondern auch die dazugehörigen Genres. Dies ist jedoch nicht der Fall, es wird lediglich in die Movies Tabelle geschrieben.

Muss man das Speichern der GenreString selbst durchführen oder besteht ein Fehler in meiner Konfiguration?
 

Zurück
Oben