我正在阅读《Hibernate in Action》一书,发现很难掌握以下概念。
我无法理解为什么同一个外键有两种不同的内存表示,以及为什么在执行以下代码时 hibernate 会检测到外键的两个不同更改:
bid.setItem(item)
bids.add(bid)
存储在项目的出价集合中的出价和出价都引用相同的外键。
最佳答案
Item
在内存中保存 Bids
的集合,而 Bid
在内存中保存 Item
。
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
,您还必须确保更新 的
对象使所有内容保持同步。否则,bids
集合itembid
对象将具有与其关联的 item
,但是 item
对象不会具有该 bid
它的集合,这意味着 item
对象将不同步。
希望这有帮助!
关于java - Hibernate 中两个单向映射与双向映射有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59046234/