我正在使用Eclipselink并遇到使用辅助表的问题。 我有两张桌子如下。
包含student_id(主键),student_name等列的学生
注册列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”之类的错误。不能为空。
有没有办法防止持久存在二级表?
非常感谢任何帮助。
感谢!!!
答案 0 :(得分:0)
正如@Eelke所说,最好的解决方案是定义两个类和一个OneToOne关系。
您可能还可以使用继承,让Student和RegisteredStudent添加附加表。但这种关系是一个更好的设计。