Java 冬眠一个一个?

Java 冬眠一个一个?,java,hibernate,one-to-many,hibernate-onetomany,Java,Hibernate,One To Many,Hibernate Onetomany,在Hibernate中,您可以分别通过@OneToMany或@ManyToOne注释指定一对多或其逆多对一。但在我看到的示例中,每次将A与B关联时,都需要将B与A关联。例如,如果教师与课程有一对多关系(教师可以教授许多课程),我是否需要: teacher.getCourses().add(mathCourse); teacher.getCourses().add(historyCourse); 以及: mathCourse.setTeacher(teacher); historyCourse.

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

teacher.getCourses().add(mathCourse);
teacher.getCourses().add(historyCourse);
以及:

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

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

为什么?提前谢谢

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

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

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


例如,只要
mathCourse
是一个持久化实体,您只需要将其添加到关系的一侧。另外,你不一定需要双向关系。谢谢@vicky(+1)-你能在这里解释一下单向关系和双向关系的区别吗?两者的好处是什么?它们是如何影响底层表结构的?再次感谢!双向关系提供了双向的导航访问,因此您可以访问另一端而无需显式查询。它还允许您将级联选项应用于两个方向。请检查此[链接]
@Entity
@Table(name = "company")
public class Company implements Serializable {
 
  @ManyToOne
  @JoinColumn(name = "statusId")
  private CompanyStatus status;
   
  ...
   
 }