【问题标题】:Hibernate OneToMany and ManyToOne?休眠 OneToMany 和 ManyToOne?
【发布时间】:2013-07-25 02:56:29
【问题描述】:

在 Hibernate 中,您可以分别通过 @OneToMany@ManyToOne 注释指定一对多或反向多对一。但是在我看到的示例中,每次将 A 与 B 关联时,您也需要将 B 与 A 关联。例如,如果 TeacherCourse 具有一对多关系(一个老师可以教很多课程),我是否需要:

teacher.getCourses().add(mathCourse);
teacher.getCourses().add(historyCourse);

还有:

mathCourse.setTeacher(teacher);
historyCourse.setTeacher(teacher);

或者仅将它们单向关联就足够了(从而允许您选择上述一组关系)?换句话说,我可以通过以下方式将它们联系起来吗:

teacher.getCourses().add(mathCourse);
teacher.getCourses().add(historyCourse);

为什么/为什么不?提前致谢!

【问题讨论】:

  • 例如,只要mathCourse是一个持久化的实体,你只需要在关系的一侧添加即可。此外,您不一定需要双向关系。

标签: java hibernate one-to-many hibernate-onetomany


【解决方案1】:

在这种情况下,您只能添加单向关系。请参阅下面的示例

@Entity
@Table(name = "contact")
public class Contact implements Serializable {

 

 @ManyToOne
         @JoinColumn(name = "companyId")
           private Company company;

... }

@Entity
@Table(name = "company")
public class Company implements Serializable {
 
  @ManyToOne
  @JoinColumn(name = "statusId")
  private CompanyStatus status;
   
  ...
   
 }

【讨论】:

  • 谢谢@vicky (+1) - 你能在这里帮助解释单向和双向关系之间的区别吗?两者都有什么好处,两者如何影响基础表结构?再次感谢!
  • 双向关系提供双向导航访问,因此您无需显式查询即可访问另一侧。它还允许您将级联选项应用于两个方向。请检查这个,[链接]powerdream5.wordpress.com/2007/10/18/…
猜你喜欢
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 2021-04-26
相关资源
最近更新 更多