java - Hibernate 中两个单向映射与双向映射有何不同?

标签 java hibernate orm

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

enter image description here

我无法理解为什么同一个外键有两种不同的内存表示,以及为什么在执行以下代码时 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 集合item 对象使所有内容保持同步。否则,bid 对象将具有与其关联的 item,但是 item 对象不会具有该 bid它的集合,这意味着 item 对象将不同步。

希望这有帮助!

关于java - Hibernate 中两个单向映射与双向映射有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59046234/

相关文章:

java - Hibernate:未能延迟初始化角色集合,没有 session 或 session 已关闭

java - Hibernate单表继承

java - Hibernate分页机制

php - Kohana3 ORM : loading Key/Value Attributes

java - Hibernate 的 Activity 记录模式

java - 线程莫名其妙的死掉了

java - Android 中的 onLayout() 行为

java - 映射异常 : Type can not be determined for java. util.Set

java - 无法使用 Hibernate 和 MYSQL 创建表

java - 如何将 fragment 的上下文转换为 LifecycleOwner?