【问题标题】:Is correct to use @OneToMany with @OneToOne?将@OneToMany 与@OneToOne 一起使用是否正确?
【发布时间】:2017-10-14 17:53:10
【问题描述】:

我有一个班级Portfolio,其中保存了债务人在不同银行的债务。因此,投资组合具有Debt 对象的列表,注释为@OneToMany

这是Portfolio

@Entity
public class Portfolio extends PersistentEntity {
    @OneToMany
    private List<Debt> debts;

    /* Getters and setters */
}

还有班级Debt

@Entity
public class Debt extends PersistentEntity {
    @OneToOne
    private Portfolio portfolio;

    /* Getters and setters */
}

我的问题是在 Debt 类中使用什么注释。我知道它是@OneToOne,因为债务属于特定的投资组合,但有人建议我使用@ManyToOne。我从这个注释中了解到,债务可以被不同的投资组合引用。这是正确的吗?

【问题讨论】:

  • 一对多关系的另一端是多对一。 “一个”投资组合有“许多”债务。从单笔债务的角度看,是一债一债,但实际上,债务类别中的关系代表了整体的关系。
  • 许多Debts 属于一个单一的“投资组合”,所以@ManyToOne 在Debt。这是关于实体之间的整体关系,而不是关于 Debt 的特定实例。
  • 完美!但是如果我使用@OneToOne,会不会出现错误(除了概念上的误解)?我问你是因为我用@OneToOne 使用它,但它没有抛出任何错误,所以可能是没有出现错误,或者我忘记实现某些东西而这些错误对我来说没有出现。
  • 一些 JPA 关系的好读物:stackoverflow.com/questions/3113885/…

标签: java spring hibernate


【解决方案1】:

你应该使用注解@ManyToOne。 在您的情况下,正如您所说,投资组合有一个债务对象列表,注释是@OneToMany。 另一方面,每个债务只能属于一个投资组合,所以你应该使用注释@ManyToOne

另外,请参阅以下链接:

【讨论】:

  • 两个类中的注解是我们想要双向关系的时候使用的吧?如果我不在乎债务有投资组合参考,我只在Portfolio 中使用@ OneToMany,对吧?
猜你喜欢
  • 2021-06-16
  • 1970-01-01
  • 2019-08-21
  • 2017-03-22
  • 2021-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多