Habe folgendes Problem mit Hibernate.
Kleines Beispiel um meine Problem zu verdeutlichen, ich habe drei Klassen:
Auto.java
Fahrer.java
LinkFahrerAuto.java
Die Klasse Auto erzeugt eine Datenbanktabelle mit Spalte ID_AUTO, und NAME_AUTO sowie füllt diese. Auf NAME_AUTO habe ich ein UniqueConstraint angewandt, also ein Autotyp darf nur einmal in der Tabelle geschrieben werden.
Die Klasse Fahrer mach das Selbe jedoch statt Auto alles mit Fahrer.
Die Klasse LinkFahrerAuto erzeugt eine Verlinkungstabelle, welcher Fahrer welches Auto hat(kleines Code-beispiel siehe unten)
Probleme bekomme ich wenn ich versuche ein Auto was schon in der Datenbank vorhanden ist noch mal einzutragen. Hier greift ja mein UniqueConstraint. Was ich also mache ist eine Abfrage zu generieren die überprüft ob der Autotyp schon in der Tabelle vorhanden ist. Wenn ja dann soll der Autotyp nicht geschrieben werden.
Bsp.: in der Tabelle Auto ist "Ente" schon vorhanden. Ein zweiter Fahrer hat auch eine "Ente" also wird dieser Autotyp nicht in der Tabelle Auto abgelegt.
Mein eigentliches Problem liegt in der Verlinkungstabelle "TBL_AUTO_FAHRER". Nachdem der zweite Fahrer zwar in die Tabelle Fahrer eingetragen wurde aber sein Auto ("Ente") nicht, gibt es Probleme beim Schreiben in die Verlinkungstabelle.
Gibt es eine Möglichkeit diese elegant zu lösen?
Kleines Beispiel um meine Problem zu verdeutlichen, ich habe drei Klassen:
Auto.java
Fahrer.java
LinkFahrerAuto.java
Die Klasse Auto erzeugt eine Datenbanktabelle mit Spalte ID_AUTO, und NAME_AUTO sowie füllt diese. Auf NAME_AUTO habe ich ein UniqueConstraint angewandt, also ein Autotyp darf nur einmal in der Tabelle geschrieben werden.
Die Klasse Fahrer mach das Selbe jedoch statt Auto alles mit Fahrer.
Die Klasse LinkFahrerAuto erzeugt eine Verlinkungstabelle, welcher Fahrer welches Auto hat(kleines Code-beispiel siehe unten)
Java:
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Column(name = "ID_AUTO_FAHRER")
private int idAutoFahrer;
@OneToOne
@JoinColumn(name = "AUTO_ID")
private Auto auto = new Auto();
@OneToOne
@JoinColumn(name = "FAHRER_ID")
private Fahrer fahrer = new Fahrer();
Probleme bekomme ich wenn ich versuche ein Auto was schon in der Datenbank vorhanden ist noch mal einzutragen. Hier greift ja mein UniqueConstraint. Was ich also mache ist eine Abfrage zu generieren die überprüft ob der Autotyp schon in der Tabelle vorhanden ist. Wenn ja dann soll der Autotyp nicht geschrieben werden.
Bsp.: in der Tabelle Auto ist "Ente" schon vorhanden. Ein zweiter Fahrer hat auch eine "Ente" also wird dieser Autotyp nicht in der Tabelle Auto abgelegt.
Mein eigentliches Problem liegt in der Verlinkungstabelle "TBL_AUTO_FAHRER". Nachdem der zweite Fahrer zwar in die Tabelle Fahrer eingetragen wurde aber sein Auto ("Ente") nicht, gibt es Probleme beim Schreiben in die Verlinkungstabelle.
Gibt es eine Möglichkeit diese elegant zu lösen?