Ich habe in der Datenbank zwei Tabellen:
Tabelle 1: Benutzer
Tabelle 2: Rollen
Ein Benutzer hat somit eine Liste von Rollen. In Hibernate habe ich das folgendermaßen umgesetzt
und
Mein Problem ist jetzt folgendes:
Wenn ich zu einem Benutzer die Liste mit den Rollen nehmen und eine Rolle aus der liste entferne und dann mittels "SaveOrUpdate" die neue Liste in der Datenbank speichern will, dann gibt es den Eintrag den ich aus der Liste entfernt habe immer noch in der Datenbank nur die Benutzer_ID ist dann NULL. Also:
Ist möglich Hibernate mitzuteilen, das er in dem Fall ein Delete-Statement an die Datenbank absetzt um solchen "NULL"-Zeilen vorzubeugen?
Tabelle 1: Benutzer
Code:
ID | Benutzer_Name
--------------------
1 | Hugo
2 | Klaus
Tabelle 2: Rollen
Code:
ID | Benutzer_ID | Rollen_Name
------------------------------
1 | 1 | Rolle_A
2 | 1 | Rolle_B
3 | 2 | Rolle_A
4 | 2 | Rolle_C
5 | 2 | Rolle_D
Ein Benutzer hat somit eine Liste von Rollen. In Hibernate habe ich das folgendermaßen umgesetzt
Java:
//Tabelle: Benutzer
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "BENUTZER_ID")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@OneToMany(targetEntity = Rollen.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "BENUTZER_ID")
public List<Rollen> getRollen() {
return rollen;
}
public void setRollen(List<Rollen> rollen) {
this.rollen= rollen;
}
und
Java:
//Tabelle: Rollen
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ROLLEN_ID")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@JoinColumn(name ="BENUTZER_ID")
@ManyToOne(targetEntity = Benutzer.class, optional = true, fetch = FetchType.EAGER)
public Benutzer getBenutzer() {
return benutzer;
}
public void setBenutzer(Benutzer benutzer) {
this.benutzer= benutzer;
}
Mein Problem ist jetzt folgendes:
Wenn ich zu einem Benutzer die Liste mit den Rollen nehmen und eine Rolle aus der liste entferne und dann mittels "SaveOrUpdate" die neue Liste in der Datenbank speichern will, dann gibt es den Eintrag den ich aus der Liste entfernt habe immer noch in der Datenbank nur die Benutzer_ID ist dann NULL. Also:
Code:
//Die Rolle mit dem Namen "Rolle_C" wurde aus der Liste der Rollen die der Benutzer mit der ID 2 hat entfernt
ID | Benutzer_ID | Rollen_Name
------------------------------
1 | 1 | Rolle_A
2 | 1 | Rolle_B
3 | 2 | Rolle_A
4 | NULL | Rolle_C
5 | 2 | Rolle_D
Ist möglich Hibernate mitzuteilen, das er in dem Fall ein Delete-Statement an die Datenbank absetzt um solchen "NULL"-Zeilen vorzubeugen?