1

我正在使用 Eclipselink 并且在使用辅助表时遇到问题。我有两个表如下。

  1. 具有列 student_id(Primary Key)、student_name 等的学生。

  2. 使用列 student_id(与 Student 表的 FK 关系)、 course_name(非空约束)等进行注册。

要求是学生可能有也可能没有注册。如果学生已注册,则数据也应保存在注册表中。否则只有学生表应该被持久化。

我的代码片段如下。

Student.java
------------

@Entity
@Table(name = "STUDENT")
@SecondaryTable(name = "REGISTRATION")

@Id
@Column(name = "STUDENT_ID")
private long studentId;

@Basic(optional=true)
@Column(name = "COURSE_NAME", table = "REGISTRATION")
private String courseName;

我尝试了以下场景。1. 注册学生 - 工作正常。数据被添加到学生和注册表 2. 没有注册的学生 - 出现诸如“COURSE_NAME”之类的错误不能为空。

有没有办法防止持久化到辅助表中?

任何帮助深表感谢。

谢谢!!!

4

1 回答 1

0

正如@Eelke 所说,最好的解决方案是定义两个类和一个 OneToOne 关系。

潜在地你也可以使用继承,有一个 Student 和一个 RegisteredStudent 来添加额外的表。但这种关系是一个更好的设计。

于 2013-06-26T13:28:16.960 回答