我有两个实体StudentGroup。有一个名为StudentGroup的第三个实体,它包含对Student的引用、对Group的引用和一个Date字段。
我试图实现Student&StudentGroup之间的一对多关系,反之亦然。同样的想法也适用于Group&StudentGroup
Student等级:

@Entity
@Table(name = "student")
public class Student {
 @Id @GeneratedValue
 private int sid;

 @OneToMany(mappedBy = "student", cascade = CascadeType.ALL)
 private Set<StudentGroup> studentGroups;

 //Setter & Getter

}

Group类别:是:
@Entity
@Table(name = "group")
public class Group {
 @Id @GeneratedValue
 private int gid;

 @OneToMany(mappedBy = "group", cascade = CascadeType.ALL)
 private Set<StudentGroup> studentGroups;

 //Setter & Getter

}

StudentGroup类别:
@Entity
 @Table(name = "student_groups")
 public class StudentGroup {
        @Id @GeneratedValue
        private int id;

        @Column(name = "lastChanged")
        private Timestamp lastChanged;

        @ManyToOne
        @JoinColumn(name="sid")
        private Student student;

        @ManyToOne
        @JoinColumn(name="gid")
        private Group group;
        //Setter & Getter
    }

映射定义:
<mapping class="com.my.db.Student" />
<mapping class="com.my.db.Group" />
<mapping class="com.my.db.StudentGroup" />

当我启动tomcat服务器时,总会出现以下错误:
 org.hibernate.HibernateException: Missing table: student_student_groups
    at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1302)
    at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:155)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:509)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1790)

为什么服务器试图查找我在任何地方都没有定义的student_student_groups表?

最佳答案

如果你没有注释你的关系,创建一个连接关系的连接表,那么在你的例子中,应该包含一个连接表在cc和cc之间,如果你在属性表中添加一个连接表,也可以创建一个连接表,但是如果你想避免使用连接表,你可以在关系中使用注释:
例如:

@OneToMany
@JoinColumn(name="COLUMN_NAME")

09-11 03:50