1

我刚开始使用 netbeans IDE 使用 JEE6,现在我正在使用 toplink 学习 JPA。我正在使用 Netbeans IDE 和 mySQL。

我创建了 2 个非常简单的表,具有多对多关系:

table student
int id PK
varchar name

table teacher
int id PK
varchar name

//the mapping
table studentTeacher
int studentID FK
int teacherID FK

studentTeacher 表将 Student id 映射到 Teachers id,并在删除和更新时进行级联。

我使用了“从数据库生成实体”netbeans 功能,它工作正常:我可以将 Student 对象添加到我的学生表中,我可以将一个教师对象添加到我的教师表中。

问题是,我怎样才能创建一个“studentTeacher”实体并坚持下去?或者它已经由 IDE 完成?

这是 Netbeans 自动生成的注释:

 //Student Entity annotation generated by Netbeans 7.0.1

 @Id
 @Basic(optional = false)
 @NotNull
 @Column(name = "id")
 private Integer id;
 @Size(max = 40)
 @Column(name = "name")
 private String name;
 @JoinTable(name = "studentTeacher", joinColumns =
 {
    @JoinColumn(name = "studentID", referencedColumnName = "id")
 }, inverseJoinColumns =
 {
    @JoinColumn(name = "teacherID", referencedColumnName = "id")
 })
 @ManyToMany
 private Collection<Teacher> teacherCollection;

谢谢!

4

1 回答 1

4

正确地说,它已经由 JPA 实现完成,在您的情况下:TopLink。您不需要StudentTeacher实体,因为它本身不是实体,它只是实体-关系方案所需的辅助表,以便为您的多对多关系建模。

如果除了两个实体的外键之外,您之间的关系Student和具有其他属性,那么您将需要一个额外的实体,但您已经存在的实体 ( and ) 将不再具有多对多关系,而是一对多关系与该中介实体的多/多对一。TeacherStudentTeacherStudentTeacher

我的建议是,如果您的模型像您的示例一样简单,请保持原样。

于 2012-04-06T23:06:10.003 回答