Ich habe eine @OneToOne
Beziehung zwischen zwei JPA-Entitäten, das folgende Beispiel ist vereinfacht und nicht die tatsächlichen Entitätsnamen.JPA Zusammenführung einer @ OneToOne Entity-Beziehung
@Entity
public class Stock {
@Id
private Long id;
@OneToOne(fetch = FetchType.Lazy, mappedBy = "stock", cascade = CascadeType.ALL)
private StockDetail detail;
}
Und StockDetail
@Entity
public class StockDetail {
@Id
private Long id;
@OneToOne
@JoinColumn(name = "STOCK_ID")
private Stock stock;
}
In meinem Beispiel brauche ich von ID für Lager suchen und dann die Lager Detail aktualisieren mit merge
zB.
Stock stock = em.find(Stock.class, 1L);
StockDetail detail = stock.getDetail();
// Do some updates to detail
detail = em.merge(detail);
An diesem Punkt mit dem Debugger ich, dass die zurück detail
aus der Zusammenführung sehe die aktualisierte JPA-Entität ist. Allerdings habe ich ein Problem, wenn ich das Folgende nochmal mache.
Stock stock = em.find(Stock.class, 1L);
StockDetail detail = stock.getDetail();
detail
jetzt den alten Zustand des Unternehmens zu haben scheint, ich bin nicht sicher, was mit dem oben
Verwenden Sie für beide Operationen einen anderen EntityManager? –
Haben Sie Ihre Änderungen nach der Zusammenführung vorgenommen? – Shirkam
nach Änderungen am Detail versuchen, nur auf Lager nicht Detail Objekt 'em.merge (Lager);'. Kaskadenangabe auf Lager. – janith1024