繁体   English   中英

JOne合并@OneToOne实体关系

[英]JPA merge of a @OneToOne entity relationship

我在两个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似乎具有实体的旧状态,我不确定上述问题是什么

这实际上是@NicoVanBelle和@ janith1024注释的组合。

  1. 有两个实体管理器,一个非缓存的em用于执行查找,另一个缓存的em用于进行合并。
  2. 一旦我使非缓存的em对股票进行合并,它便开始工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM