0
我有一個@OneToOne
兩個JPA實體之間的關係,下面的例子被簡化了,而不是真正的實體名稱。JPA合併@OneToOne實體關係
@Entity
public class Stock {
@Id
private Long id;
@OneToOne(fetch = FetchType.Lazy, mappedBy = "stock", cascade = CascadeType.ALL)
private StockDetail detail;
}
而且StockDetail
@Entity
public class StockDetail {
@Id
private Long id;
@OneToOne
@JoinColumn(name = "STOCK_ID")
private Stock stock;
}
在我的例子,我需要通過ID來搜索股票,然後更新使用merge
如股票的細節。
Stock stock = em.find(Stock.class, 1L);
StockDetail detail = stock.getDetail();
// Do some updates to detail
detail = em.merge(detail);
在這一點與調試器我可以看到從合併返回detail
是更新的JPA實體。但是,當我再次執行以下操作時,我遇到了一個問題。
Stock stock = em.find(Stock.class, 1L);
StockDetail detail = stock.getDetail();
detail
現在似乎有實體的老態,我不知道這有什麼錯上述
您是否在兩種操作中使用了另一個entityManager? –
合併之後你提交了更改嗎? – Shirkam
在對細節進行更改後,嘗試僅使用庫存而非詳細對象'em.merge(stock);'。級聯提到股票。 – janith1024