Hallo Leute!
ich bin recht neu in Hibernate und habe ein Problem, den ich nicht so recht lösen kann. Zunächst erkläre ich den aktuellen Stand und meine Frage befindet sich weiter unten.
Ich habe drei DB-Tabellen, wobei die ersten beiden Stammdaten enthalten ist
und die letzte als Mapping-Tabelle für beide Stammdaten-Tabellen steht.
CREATE TABLE IF NOT EXISTS MASTERDATA_NO1
(
id bigint not null,
description varchar(255) not null,
primary key (id)
);
CREATE TABLE IF NOT EXISTS MASTERDATA_NO2
(
id bigint not null,
description varchar(255) not null,
primary key (id)
);
CREATE TABLE IF NOT EXISTS MAPPING_MD1_MD2
(
FK_MD1_ID bigint not null,
FK_MD2_ID bigint not null,
primary key (FK_MD1_ID, FK_MD2_ID)
);
Meine Mapping-Datei zu Hibernate sieht folgt aus:
....
<class name="Masterdata1" table="masterdata_no1" >
<id name="id" column="id">
<generator class="increment"/>
</id>
<property name="description" column="description" />
<set name="md2" table="mapping_md1_md2">
<key column="FK_MD1_ID"/>
<many-to-many class="Masterdata2" column="FK_MD2_ID" />
</set>
</class>
..
Meine Java-Klassen sehen so ...
package at.plate.michael.hibernate.valueobject;
import java.util.HashSet;
import java.util.Set;
public class Masterdata1 {
//properties
private int id;
private String description;
private Set<Masterdata2> md2 = new HashSet<Masterdata2>();
//getter and setter for properties
public String getDescription() { return description; }
public int getId() { return id; }
public void setDescription(String description) { this.description =
description; }
public void setId(int id) { this.id = id; }
public Set<Masterdata2> getMd2() { return md2; }
public void setMd2(Set<Masterdata2> md2) { this.md2 = md2; }
}
... und so ...
package at.plate.michael.hibernate.valueobject;
public class Masterdata2 {
//properties
private int id;
private String description;
//getter and setter for properties
public String getDescription() { return description; }
public int getId() { return id; }
public void setDescription(String description) { this.description =
description; }
public void setId(int id) { this.id = id; }
}
... aus.
Bis jetzt läuft das ganze System perfekt. Sprich, ich bekomme Masterdata1
Objekte mit Sets an Masterdata2 Objekten.
Ich habe die Mapping-Tabelle in der Datenbank um eine weitere Spalte erweitert und möchte den Wert, der darin steht, zusätzlich an Masterdata2 mitgeben.
Jetzt möchte ich gerne wissen, wie ich dies in der Mapping-Datei von
Hibernate eintragen muss?
Im Posting Anfängerfrage hab ich ein ähnliches Problem gelesen, aber die Lösung sah so aus, dass eine weitere Klasse angelegt werden muss und dies möchte ich nicht gerne machen.
Vielen Dank im Voraus.
Michael Plate
|