作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚开始使用 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 表将 Students id 映射到 Teachers id,在删除和更新时级联。
我使用了“从数据库生成实体”netbeans 功能,它工作正常:我可以将一个学生对象添加到我的学生表,我可以将一个教师对象添加到我的教师表。
问题是,我如何创建一个“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;
谢谢!
最佳答案
正确地说,它已经由 JPA 实现完成,在您的情况下:TopLink。您不需要 StudentTeacher
实体,因为它本身不是一个实体,它只是实体关系方案需要的一个辅助表,以便为您的多对多关系建模。
如果您在 Student
和 Teacher
之间的关系除了两个实体的外键之外还有其他属性,那么您将需要一个额外的实体,但您已经存在实体(Student
和 Teacher
) 将不再是多对多关系,而是与中间人 StudentTeacher< 的一对多/多对一关系
实体。
我的建议是,如果您的模型与您的示例一样简单,请保持原样。
关于java - JPA多对多级联删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10050156/
我是一名优秀的程序员,十分优秀!