gpt4 book ai didi

java - 拥有一方的真正含义是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:48:29 24 4
gpt4 key购买 nike

问题:似乎我没有正确理解 Hibernate *-to-many 映射的逻辑,或者准确地说是拥有方。

示例(一对多,一方拥有一方)

@Entity
public class Troop {
@OneToMany
@JoinColumn(name="troop_fk") //we need to duplicate the physical information
public Set<Soldier> getSoldiers() {
...
}

@Entity
public class Soldier {
@ManyToOne
@JoinColumn(name="troop_fk", insertable=false, updatable=false)
public Troop getTroop() {
...
}

问题:

  1. 为什么我应该复制物理信息?为什么 Troop 表不包含 troop_fk 字段(看上面的例子)
  2. Hibernate 会忽略映射(非所有者)端的所有查询吗?
  3. 所有者方面是否暗示对实体的保存顺序有一些限制?
  4. 下一个短语是什么意思?

Mapping one end of an association with inverse="true" does not affect the operation of cascades as these are orthogonal concepts.

最佳答案

以下是我对这个概念的大致理解。我不知道
如果这 100% 对应于 HibernateJPA 对它的使用。

当你有聚合时,你有一个实体(比如 Car)并且它有另一个类型的实体集合(比如 Seat)。或者你有一个 Student 并且它有一组 Course 实体(他已经注册的类(class))。

现在这个集合可能被拥有或不被拥有。

  1. 当它被拥有时,意味着它只属于这个父级,父级拥有它。这是一个建模概念。例如,如果您删除父实体,那么子实体不应该再存在,它们只是在拥有实体之外没有意义。所以他们也应该被删除。不确定这个 CarSeat 是否是拥有集合的最佳示例,因为这些 Seat 实体在理论上可能会移动到另一个 Car 实例(比如在维修店)。

  2. 另一方面,您可能有一个不属于您的 Collection 。假设一个 Student 有一个它已经注册的 Course 的集合。现在,Student 不拥有这个集合,因为显然 >Student 离开了大学(所以我们删除了他),这并不意味着他的Course 不复存在。我意识到这是一个多对多的例子。我现在想不出一个很好的一对多示例来说明不属于自己的 Collection 。

关于java - 拥有一方的真正含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22961992/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com