繁体   English   中英

我如何才能建立多对多关系。 生成的实体将具有额外的属性。

[英]How can I manage to create a many-to-many relationship. The generated entity will have extra attributes.

我有2个实体:“班级”(学生)和“学生”。 一个学生可以参加许多班级(例如在大学里),而一个班级有很多学生。 问题是如何确保在中间生成的该实体具有2个主键,即每个其他实体(学生和班级)的ID。 我需要知道如何使用注释创建它。 我在项目中使用EJB3和JPA批注。

首先,您不需要中间实体。 您有两个实体以及它们之间的联接表。

仅当您具有有关该关系的其他信息时,才需要一个中间实体-例如, StudentClass可能具有timesAbsent列。

如果您确实需要第三个实体,则可以拥有:

  1. @EmbeddedId ,您在其中定义一个单独的类,其中包含主键的两个部分。 该类必须是@Embeddable
  2. @IdClass ,它将允许您指定两个@Id字段。 您将再次需要另一个类来保存代表密钥的两个字段。

请参阅此问题以选择哪个选项。

请注意,因此,您有一个复合主键,而不是两个主键(您没有)

我知道如何使用休眠方式实现这一目标。 可能会有所帮助。

将集合类型设为Set。

 public class CollegeClass { 
     private Set<Student> students;
 }

 public class Student { 
     private Set<CollegeClass> classes; 
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM