当有多个用户类型时,将用户映射到userinfo

时间:2016-04-01 04:26:21

标签: hibernate database-design

我有一个用户域类。它有两种用户类型。一个是0,0 1,0 0,6666666666666666 -0,3333333333333333 0,0 0,0 1,3333333333333333 1,0 0,0 -0,3333333333333333 0,6666666666666666 0,0 0,0 3,3333333333333335 0,0 0,0 -1,0 1,0 1,0 0,0 3,0 0,0 0,0 -0,6666666666666666 0,3333333333333333 0,0 1,0 0,6666666666666667 0,0 0,0 -0,3333333333333333 -1,3333333333333333 0,0 0,0 -12,666666666666666 ,另一个是 0,00 1,00 0,67 -0,33 0,00 0,00 1,33 1,00 0,00 -0,33 0,67 0,00 0,00 3,33 0,00 0,00 -1,00 1,00 1,00 0,00 3,00 0,00 0,00 -0,67 0,33 0,00 1,00 0,67 0,00 0,00 -0,33 -1,33 0,00 0,00 -12,67 。它有两个字段,一个是teacher,另一个是student。由于teacherInfo用户拥有许多与studentInfo用户不同的属性,因此我无法将其合并为teacher。否则会有很多空字段。

所以在hibernate中,我应该如何映射关系。如果我使用student,则要求UserInfoOne-to-one都不能为空。因此,它没有意义,因为教师用户不应该映射teacherInfostudentInfo关系解决了这个问题,但似乎有线。我只是无法做出决定。感谢。

studentInfo

1 个答案:

答案 0 :(得分:0)

  

所以在hibernate中,我应该如何映射关系。如果我使用一对一,则要求teacherInfo和studentInfo都不能为空。

这是不正确的。 @OneToOne关联可以是null。所以你可以使用它

public class User {

    @OneToOne
    private TeacherInfo teacherInfo;

    @OneToOne
    private StudentInfo studentInfo;

}

您可以使用@Embedded

public class User {

    @Embedded
    private TeacherInfo teacherInfo;

    @Embedded
    private StudentInfo studentInfo;

}

即使是这样的方法@ManyToOne@OneToOne

class Teacher {

        @ManyToOne
        private User user;  

}

class Student {

        @ManyToOne
        private User user;  

}