簡體   English   中英

Hibernate @許多到許多分組地圖映射

[英]Hibernate @Many to many grouped map mapping

我想解決這個問題,因為它看起來很有趣,可以直接從我有db sheme的盒子中獲取分組的對象:

Teacher
-id
-name

Group
-id
-name

Subject
-id
-name

Several teachers can teaches one subject

Subject_teachers
-subject_id
-teacher_id

Group_subjects
-group_id
-subject_id

我會按組分組給老師上課

class Teacher{
 @Id id ,
...
   @ManyToMany
   ???
   Map<Group,Subject) subjects;
};
      @Entity
      @Table(name = "Teacher")
      public class Teacher {

            private Integer teacherId;
            private String name;
            private Set<SubjectTeachers> subjectTeachers = new HashSet<SubjectTeachers>(0);

            @Id
            @GeneratedValue(strategy = GenerationType.IDENTITY)
            @Column(name = "teacher_id", unique = true, nullable = false)
            public Integer getTeacherId() {
                return teacherId;
            }

            public void setTeacherId(Integer teacherId) {
                this.teacherId = teacherId;
            }

            @Column(name = "name", nullable = false)
            public String getName() {
                return name;
            }   

            public void setTitle(String name) {
                this.name = name;
            }

            @OneToMany(mappedBy = "subjectTeachers", cascade = CascadeType.ALL, fetch=FetchType.LAZY)
            public Set<SubjectTeachers> getSubjectTeachers() {
                return subjectTeachers;
            }

            public void setProjectTags(Set<SubjectTeachers> subjectTeachers) {
                this.subjectTeachers = subjectTeachers;
            }
        }

    @Entity
    @Table(name = "Subject")
    public class Subject{

        private Integer subjectId;
        private String name;

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "subject_id", unique = true, nullable = false)
        public Integer getSubjectId() {
            return subjectId;
        }

        public void setSubjectId(Integer subjectId) {
            this.subjectId = subjectId;
        }

        @Column(name = "name", nullable = false)
        public String getName() {
            return name;
        }   

        public void setTitle(String name) {
            this.name = name;
        }

    }

    @Entity
    @Table(name ="subject_teachers")
    public SubjectTeachers{

        private Integer subjectTeachersID;
        private Teacher teacher;
        private Subject subject;

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "subjectTeachersID", unique = true, nullable = false)
        public Integer getSubjectTeachersId() {
            return subjectTeachersID;
        }

        public void setSubjectTeachersId(Integer subjectTeachersID) {
            this.subjectTeachersID = subjectTeachersID;
        }


        @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
        @JoinColumn(name = "teacher_id", nullable = false)
        public Teacher getTeacher() {
            return teacher;
        }

        public void setTeacher(Teacher teacher) {
            this.teacher = teacher;
        }


        @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
        @JoinColumn(name = "subject_id", nullable = false)
        public Subject getSubject() {
            return subject;
        }

        public void setSubject(Subject subject) {
            this.subject = subject;
        }   

    }

    @Entity 
    @Table(name = "group_subjects")
    public class GroupSubjects{

        private Integer groupId;

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "group_id", unique = true, nullable = false)
        public Integer getGroupId() {
            return groupId;
        }

        public void setGroupId(Integer groupId) {
            this.groupId = groupId;
        }

        private Subject subject;

        @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
        @JoinColumn(name = "subject_id", nullable = false)
        public Subject getSubject() {
            return subject;
        }

        public void setSubject(Subject subject) {
            this.subject = subject;
        }   
    }

希望對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM