如何在Eclipselink中选择性地保留辅助表

时间:2013-06-26 05:36:52

标签: jpa eclipselink

我正在使用Eclipselink并遇到使用辅助表的问题。 我有两张桌子如下。

  1. 包含student_id(主键),student_name等列的学生

  2. 注册列student_id(与Student表的FK关系),course_name(非空约束)等。

  3. 要求是学生可能会或可能不会注册。如果学生已注册,则数据也应保留在注册表中。否则只应保留学生表。

    我的代码段如下所示。

    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”之类的错误。不能为空。

    有没有办法防止持久存在二级表?

    非常感谢任何帮助。

    感谢!!!

1 个答案:

答案 0 :(得分:0)

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

您可能还可以使用继承,让Student和RegisteredStudent添加附加表。但这种关系是一个更好的设计。