Ich habe hier eine GUI mit zwei Tabellen die jeweils eine Entität darstellen, Product und StockItem. Es gibt eine weitere Entität StockItemProductAssociation, welche ich über die GUI für die Product-Entität hinzufüge. Ich versuche jetzt beide Tabellen zu aktualisieren wenn an einer Entität was geändert wurde, aber es funktioniert nicht so richtig.
Die gespeicherte Product-Entität selbst mit hinzugefügter oder entfernter StockItemProductAssociation hat nach dem Neuladen die richtigen Daten, aber in StockItem ist das erst nach Neustart des gesamten Programms zu sehen.
In Product habe ich das so:
In StockItem auch:
und die StockItemProductAssociation hat diese Felder:
Das EntityManager-Objekt worüber die Daten geladen und gespeichert werden wird nur ein mal erzeugt für das gesamte Programm, deswegen weiß ich nicht wieso das Programm neu gestartet werden muss.
Die gespeicherte Product-Entität selbst mit hinzugefügter oder entfernter StockItemProductAssociation hat nach dem Neuladen die richtigen Daten, aber in StockItem ist das erst nach Neustart des gesamten Programms zu sehen.
In Product habe ich das so:
Java:
@OneToMany(mappedBy = "product", cascade = CascadeType.ALL, orphanRemoval = true)
public List<StockItemProductAssociation> itemProductAssociations = new ArrayList();
In StockItem auch:
Code:
@OneToMany(mappedBy = "stockItem", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
public List<StockItemProductAssociation> itemProductAssociations = new ArrayList();
und die StockItemProductAssociation hat diese Felder:
Code:
@Id
@ManyToOne(fetch=FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinColumn(name = "STOCKITEMNUMBER", nullable = true)
public StockItem stockItem;
@Id
@ManyToOne(fetch=FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
@JoinColumn(name = "PRODUCTNUMBER", nullable = true)
public Product product;
Das EntityManager-Objekt worüber die Daten geladen und gespeichert werden wird nur ein mal erzeugt für das gesamte Programm, deswegen weiß ich nicht wieso das Programm neu gestartet werden muss.