在开发过程中创建数据库表时,有时候会发现单纯的创建一个主键是不可行的,有时候就需要多个字段联合保持唯一,本文讲述如何创建组合主键的映射。
例如:记录一个班的考试成绩。学生跟科目是多对多的关系,只有一个学生和一门课程保持唯一时才能确保这个关系成立。
1.创建实体。
2.创建联合组件的实体(这个实体需要实现序列化接口,需要重写equals方法)
3.写映射文件。
name表示实体中哪个字段表示组合主键,class表示那个类是组合主键。
<composite-id name="scoreId" class="ScoreId"></composite-id>
在上面标签中加入组合主键的属性。
<key-property name="stuId"></key-property>
<key-property name="subjectId"></key-property>
4.SchemaExport
这个工具可以直接使用实体和映射关系生成数据库表。
Configuration cfg = new Configuration().configure();
SchemaExport se = new SchemaExport(cfg);
//第一个参数是否生成ddl脚本,第二个参数是否执行到数据库
se.create(true, true);
数据库删除原来的表,创建新的表。
以下为hibernate打印的sql语句。
注:本文是在学习期间根据网上视频写的学习笔记,如有侵权请联系删除!