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