Java Hibernate@Many-to-Many分组映射

Java Hibernate@Many-to-Many分组映射,java,hibernate,Java,Hibernate,我想解决这个问题,因为它看起来很有趣,直接从框中获取分组对象 我已经告诉我了: 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

我想解决这个问题,因为它看起来很有趣,直接从框中获取分组对象 我已经告诉我了:

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;
};
班主任{
@身份证,
...
@许多
???
映射
@实体
@表(name=“Teacher”)
公共班主任{
私有整数教师ID;
私有字符串名称;
私有集subjectTeachers=newhashset(0);
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“teacher\u id”,unique=true,nullable=false)
公共整数getTeacherId(){
返回教师;
}
公共void settacherid(整型教师ID){
this.teacherId=teacherId;
}
@列(name=“name”,nullable=false)
公共字符串getName(){
返回名称;
}   
public void setTitle(字符串名称){
this.name=名称;
}
@OneToMany(mappedBy=“subjectchesters”,cascade=CascadeType.ALL,fetch=FetchType.LAZY)
公共集getSubjectTeachers(){
回归学科教师;
}
公共无效setProjectTags(设置主题教师){
this.subjectTeachers=subjectTeachers;
}
}
@实体
@表(name=“Subject”)
公共课科目{
私有整数主语;
私有字符串名称;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“subject\u id”,unique=true,nullable=false)
公共整数getSubjectId(){
回归主体;
}
public void setSubjectId(整数subjectId){
this.subjectId=主观性;
}
@列(name=“name”,nullable=false)
公共字符串getName(){
返回名称;
}   
public void setTitle(字符串名称){
this.name=名称;
}
}
@实体
@表(name=“学科教师”)
公共学科教师{
私有整数subjectTeachersID;
私人教师;
私人主体;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“subjectTeachersID”,unique=true,nullable=false)
公共整数getSubjectTeachersId(){
返回主题teachersid;
}
public void setSubjectTeachersId(整数subjectTeachersID){
this.subjectTeachersID=subjectTeachersID;
}
@manytone(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn(name=“teacher\u id”,nullable=false)
公共教师getTeacher(){
归国教师;
}
公共空白设置器(教师){
这个老师=老师;
}
@OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn(name=“subject\u id”,nullable=false)
公共主题getSubject(){
返回主题;
}
公共无效设置主体(主体){
this.subject=主语;
}   
}
@实体
@表(name=“组受试者”)
公共课分组科目{
私有整数groupId;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“group\u id”,unique=true,nullable=false)
公共整数getGroupId(){
返回groupId;
}
public void setGroupId(整数groupId){
this.groupId=groupId;
}
私人主体;
@manytone(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn(name=“subject\u id”,nullable=false)
公共主题getSubject(){
返回主题;
}
公共无效设置主体(主体){
this.subject=主语;
}   
}

希望对您有所帮助。

您好,thx)我想了想,但我记得有一次我看到一个人在没有其他实体的情况下做了这件事对不起,但我们没有解决问题。我需要一张地图,地图上的主题是教老师的主题,以及包含此主题的小组
      @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;
        }   
    }