Hallo Leute,
kann ir mal jemand meinen Fehler zeigen? In einer OneToOne beziehung sollen sich die Entitys den primary key teilen. Leider Bekomme ich nur folgende Fehlermeldung. Mir ist bewusst das ich den PK aus anwender als PK in anwenderRechte verwenden muss. Nur finde ich die Lösung nicht .
Schon mal Danke für eure Meinung.
Klasse Anwender ohne getter setter
Klasse AnwenderRechte ohne getter setter
und den Button speichern in dem das ganze gespeichert wird.
kann ir mal jemand meinen Fehler zeigen? In einer OneToOne beziehung sollen sich die Entitys den primary key teilen. Leider Bekomme ich nur folgende Fehlermeldung. Mir ist bewusst das ich den PK aus anwender als PK in anwenderRechte verwenden muss. Nur finde ich die Lösung nicht .
Schon mal Danke für eure Meinung.
Javascript:
Caused by: org.hibernate.id.IdentifierGenerationException: attempted to assign id from null one-to-one property [objects.anwender.AnwenderRechte.anwender]
at org.hibernate.id.ForeignGenerator.generate(ForeignGenerator.java:90)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:120)
at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:192)
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:135)
at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:118)
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:726)
... 75 more
Klasse Anwender ohne getter setter
Code:
@Entity
@Table(name = "anwender")
public class Anwender implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "anwender_generator") // PrimaryKey wird durch den generator erstellt
@SequenceGenerator(name = "anwender_generator", sequenceName = "anwender_seq", allocationSize = 10) // anwender_generator erhält Tabell anwender_seq jeder Eintrag wird um +10 erhöht
@Column(name = "anwenderID_PK", updatable = false, nullable = false) // Tabellename ist nicht updatebar und darf nicht null beinhalten
private int anwenderID_PK;
private String anwenderBenutzerKennung;
private String anwenderVorname;
private String anwenderNachname;
private String anwenderBenutzerRolle;
private String anwenderPasswort;
private boolean anwenderIstAngemeldet;
@OneToOne(mappedBy = "anwender", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private AnwenderRechte anwenderRechte;
public Anwender(String anwenderBenutzerKennung, String anwenderVorname, String anwenderNachname,
String anwenderBenutzerRolle, String anwenderPasswort, boolean anwenderIstAngemeldet, AnwenderRechte anwenderRechte) {
this.anwenderBenutzerKennung = anwenderBenutzerKennung;
this.anwenderVorname = anwenderVorname;
this.anwenderNachname = anwenderNachname;
this.anwenderBenutzerRolle = anwenderBenutzerRolle;
this.anwenderPasswort = anwenderPasswort;
this.anwenderIstAngemeldet = anwenderIstAngemeldet;
this.anwenderRechte = anwenderRechte;
}
public Anwender() {
}
Klasse AnwenderRechte ohne getter setter
Code:
@Entity
@Table(name = "anwenderRechte")
public class AnwenderRechte implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
private int anwenderRechteID_PK;
private boolean darfErstellen;
private boolean darfLoeschen;
private boolean darfUpdaten;
private boolean darfLesen;
private int anwenderID_FK;
@OneToOne
@MapsId
private Anwender anwender;
public AnwenderRechte(boolean darfErstellen, boolean darfLoeschen, boolean darfUpdaten, boolean darfLesen) {
this.darfErstellen = darfErstellen;
this.darfLoeschen = darfLoeschen;
this.darfUpdaten = darfUpdaten;
this.darfLesen = darfLesen;
}
public AnwenderRechte() {
}
und den Button speichern in dem das ganze gespeichert wird.
Code:
AnwenderDAOImpl anwenderDAOImpl = new AnwenderDAOImpl();
anwenderDAOImpl.AnwenderDAOImpl();
AnwenderRechte anwenderRechte = new AnwenderRechte(true, true, true, true);
Anwender anwender = new Anwender(benutzerKennung, vorname, nachname, benutzerRolle, passwort, true, anwenderRechte);
anwender.getAnwenderRechte().setAnwenderRechteID_PK(anwender.getAnwenderID_PK());