我有两个实体Student
和Group
。有一个名为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")