Hallo,
sorry, mir fiel keine dümmere Überschrift ein, wie ich das Problem genauer beschreiben soll.
Für mein Studium mache ich im Moment eine Projektarbeit (Webshop in dem Autos verkauft werden). Verwenden tue ich dafür Hibernate, JBoss Seam, EJB und JSF (im Moment bin ich noch bei Hibernate, also den Entities + DAOs, Enwendungskern und JUnit-Tests).
Jetzt habe ich folgendes:
Entity Fahrzeug hat eine Referenz auf FahrzeugTyp. D.h., z.B. Passat und im FahrzeugTyp wird dann gleichzeitig die dazugehörige Marke (in dem Fall VW) referenziert.
In Fahrzeug sieht das so aus:
Wenn ich nun in meinen JUnit-Tests ein neues Fahrzeug anlege und darin eine Marke (und Typen) habe, der noch nicht existiert, z.B. Ford Focus, dann klappt alles.
Wenn ich nun aber nach dem Anlegen des Ford Focus noch einen Ford Escort eintragen will, dann bekomme ich einen Fehler, da ja Ford bereits in der marke-Tabelle besteht und die Spalte marke UNIQUE ist. So weit ja auch logisch.
Nun wollte ich wissen, ob es denn einen Cascade-Befehl gibt (einen für JPA, keinen, der ausschließlich für Hibernate funktioniert), der es ermöglicht, daß nur dann ein neuer Eintrag gemacht wird, wenn der Datensatz noch nicht besteht.
Oder geht es ausschließlich darüber, daß ich im Anwendungskern schaue, ob die Marke bereits angelegt wurde, wenn nein, dann anlegen, ansonsten nichts machen?
Danke und Grüße,
Dirk
sorry, mir fiel keine dümmere Überschrift ein, wie ich das Problem genauer beschreiben soll.
Für mein Studium mache ich im Moment eine Projektarbeit (Webshop in dem Autos verkauft werden). Verwenden tue ich dafür Hibernate, JBoss Seam, EJB und JSF (im Moment bin ich noch bei Hibernate, also den Entities + DAOs, Enwendungskern und JUnit-Tests).
Jetzt habe ich folgendes:
Entity Fahrzeug hat eine Referenz auf FahrzeugTyp. D.h., z.B. Passat und im FahrzeugTyp wird dann gleichzeitig die dazugehörige Marke (in dem Fall VW) referenziert.
In Fahrzeug sieht das so aus:
Code:
@ManyToOne(cascade={PERSIST})
@JoinColumn(name="fahrzeug_typ_id")
private FahrzeugTyp fahrzeugTyp;
Code:
@ManyToOne(cascade={PERSIST})
@JoinColumn(name="marken_id")
private Marke marke;
Wenn ich nun in meinen JUnit-Tests ein neues Fahrzeug anlege und darin eine Marke (und Typen) habe, der noch nicht existiert, z.B. Ford Focus, dann klappt alles.
Wenn ich nun aber nach dem Anlegen des Ford Focus noch einen Ford Escort eintragen will, dann bekomme ich einen Fehler, da ja Ford bereits in der marke-Tabelle besteht und die Spalte marke UNIQUE ist. So weit ja auch logisch.
Nun wollte ich wissen, ob es denn einen Cascade-Befehl gibt (einen für JPA, keinen, der ausschließlich für Hibernate funktioniert), der es ermöglicht, daß nur dann ein neuer Eintrag gemacht wird, wenn der Datensatz noch nicht besteht.
Oder geht es ausschließlich darüber, daß ich im Anwendungskern schaue, ob die Marke bereits angelegt wurde, wenn nein, dann anlegen, ansonsten nichts machen?
Danke und Grüße,
Dirk