Hallo!
Folgendes:
Ich habe eine xhtml Seite wo der User Daten zum persistieren eingeben kann, bspw: Name,Vorname etc und hierbei muss der User auch eine "Marke" eingeben und selbige entspricht einer anderen Tabelle.
Nun ist es so dass wenn ich nun die Person speichern möchte, der User zuvor per Selectbox eine "Marke" gewählt hat und ich von selbiger dann die ID kenne. Wie geht man hier nun vor, lädt man vorm persistieren die Marke aus der DB? Oder gibt man dem Objekt Person einfach ein new Marke(id) mit (alle anderen Felder sind dann nicht befüllt)? Letzteres habe ich versucht und klappt auch, nur bekomme ich leider nachdem persistieren dass Marke Objekt nicht nachgeladen, sprich im Person Objekt ist dann noch immer das Marke Objekt mit ID und alle anderen Felder sind nicht befüllt.
Folgendes:
Ich habe eine xhtml Seite wo der User Daten zum persistieren eingeben kann, bspw: Name,Vorname etc und hierbei muss der User auch eine "Marke" eingeben und selbige entspricht einer anderen Tabelle.
Java:
public class Person {
@Id
// hier steht die Sequence
private Integer id;
private String name;
...
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "marke")
private Marke marke;
public class Marke {
@Id
// hier steht die Sequence
private Integer id;
private String bezeichnung;
public T create(T entity) throws EntityExistsException,
IllegalStateException, IllegalArgumentException,
TransactionRequiredException {
em.persist(entity);
return entity;
}
Nun ist es so dass wenn ich nun die Person speichern möchte, der User zuvor per Selectbox eine "Marke" gewählt hat und ich von selbiger dann die ID kenne. Wie geht man hier nun vor, lädt man vorm persistieren die Marke aus der DB? Oder gibt man dem Objekt Person einfach ein new Marke(id) mit (alle anderen Felder sind dann nicht befüllt)? Letzteres habe ich versucht und klappt auch, nur bekomme ich leider nachdem persistieren dass Marke Objekt nicht nachgeladen, sprich im Person Objekt ist dann noch immer das Marke Objekt mit ID und alle anderen Felder sind nicht befüllt.