【问题标题】:How two unidirectional mapping is different from bidirection mapping in Hibernate?两个单向映射与 Hibernate 中的双向映射有何不同?
【发布时间】:2019-11-26 08:01:21
【问题描述】:

我正在阅读“Hibernate in Action”一书,发现难以掌握以下概念。

我无法理解为什么同一个外键有两种不同的内存表示,以及为什么当执行以下代码时,hibernate 会检测到外键的两种不同变化:

bid.setItem(item)
bids.add(bid)

存储在项目的出价集合中的出价和出价都引用相同的外键。

【问题讨论】:

    标签: java hibernate orm


    【解决方案1】:

    ItemBids 的集合保存在内存中,BidItem 保存在内存中。

    Item
    ------
    Collection<Bid> bids;
    
    Bid
    ------
    Item item;
    
    Bid bid = new Bid(...);   //bid object
    Item item = getItemFromDb();  //item object
    
    bid.setItem(item);
    bids = item.getBids();
    bids.add(bid);
    

    如果您为bid 设置item,您还必须确保更新item 对象的bids 集合以保持所有内容同步。否则,bid 对象将具有与之关联的 item,但 item 对象的集合中不会包含 bid,这意味着 item 对象将不同步。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多