我刚刚开始使用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
学生教师表将学生 ID 映射到教师 ID,并在删除和更新时级联。
我使用了"从数据库生成实体"netbeans 功能,它工作正常:我可以将 Student 对象添加到我的学生表中,也可以将 Teacher 对象添加到我的教师表中。
问题是,如何创建"学生教师"实体并保留它?还是已经由 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;
谢谢!
正确地说,它已经由 JPA 实现完成,在您的情况下:TopLink。您不需要StudentTeacher
实体,因为它本身不是一个实体,它只是实体关系方案所需的辅助表,以便对多对多关系进行建模。
如果Student
和Teacher
之间的关系除了两个实体的外键之外还具有其他属性,那么您将需要另一个实体,但您已经存在的实体(Student
和 Teacher
)将不再具有多对多关系,而是与该中间StudentTeacher
实体的一对多/多对一关系。
我的建议是,如果您的模型像您的示例中一样简单,请保持原样。