一.创建PK类
import java.io.Serializable;
public class PKCode implements Serializable {
private Integer code;
private Integer codeType;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public Integer getCodeType() {
return codeType;
}
public void setCodeType(Integer codeType) {
this.codeType = codeType;
}
public boolean equals(Object obj) {
return super.equals(obj);
}
public int hashCode() {
return super.hashCode();
}
}
二.创建实体
public class Code extends MainEntity {
private PKCode codePk;
private String name;
public PKCode getCodePk() {
return codePk;
}
public void setCodePk(PKCode codePk) {
this.codePk = codePk;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class CodeType extends MainEntity {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
三.创建映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--CODE表 -->
<hibernate-mapping package="org.apache.dream.common.entity">
<class name="Code" table="T_CODE">
<composite-id name="codePk">
<key-property name="code" column="I_CODE_ID" />
<key-property name="codeType" column="I_CODE_TYPE_ID" />
</composite-id>
</class>
</hibernate-mapping>
四.联合主键做外键
<!-- 状态 -->
<many-to-one name="status" class="org.apache.dream.common.entity.Code">
<column name="I_STATUS_CODE_ID" />
<column name="I_STATUS_CODE_TYPE_ID" />
</many-to-one>
分享到:
相关推荐
在数据库设计中,主键和外键是关系型数据库中非常重要的概念,它们用于确保数据的完整性和一致性。本文将详细介绍如何在MySQL中创建主键、外键以及复合主键。 1. **创建主键** 主键是数据库表中一个或一组字段,其...
同时,Hibernate的Criteria API或HQL(Hibernate Query Language)可以帮助进行复杂的数据库查询,包括涉及多表连接的查询,这些查询可能涉及到联合主键和外键的使用。 综上所述,SSH2+JSON的结合提供了强大的后端...
本篇将详细讲解如何使用Hibernate进行一对一单向外键关联,并且该关联涉及到联合主键的注解配置。 首先,一对一关联可以分为两种类型:单向和双向。在单向一对一关联中,只有一个实体知道另一个实体的存在,而另一...
在这个配置中,`studentId`字段在`Address`实体中作为联合主键的一部分,同时也作为`Student`实体的外键。`insertable = false, updatable = false`表示Hibernate不会尝试独立更新或插入`Address`的`studentId`,...
代码如下: ALTER TABLE 表名字 ADD CONSTRAINT pk_表名字 PRIMARY KEY( SNumber, SDate );... 您可能感兴趣的文章:sql server创建复合主键的2种方法MySQL 创建主键,外键和复合主键的语句初探SQL语句复合主键与联合主键
在某些情况下,我们可能需要为表设置联合主键,即多个字段共同构成唯一标识。本篇文章将详细讲解如何在Django的Model中实现联合主键。 首先,我们需要了解Django中的主键(Primary Key)。默认情况下,Django会在每...
4. **多对多联系的处理**:多对多的联系需要创建一个新的关系表,这个表包含两个实体各自的主键,并将它们作为联合主键或外键。 5. **弱实体的处理**:对于弱实体,除了将其转换为独立的表之外,还需要在该表中加入...
4. **主键设计**:优先使用单主键,避免使用联合主键带来的复杂性。业务属性不宜作为主键,以防修改时引发连锁反应。主键字段应选用能满足需求的最短长度,提升操作速度。 5. **考虑数据操作**:设计时需思考数据的...
4. **选修表**:记录学号、课程编号和分数,<学号,课程编号>作为联合主键,外键分别关联学生档案表和课程表。 **SQL源代码** 1. **创建数据库**:创建名为"学生信息管理"的数据库。 2. **创建表**:创建院系、...
在数据库设计中,实现一对一关系的方法有两种:外键约束和联合主键。外键约束是在一个表中添加另一个表的主键作为外键,以此来建立两个表之间的关联。联合主键则是将两个表的主键字段合并为一个复合主键,确保了唯一...
- **关联表格**:外键使不同的表之间建立起关联,方便进行联合查询和操作。 - **数据一致性**:通过外键约束,可以保证引用的外键值在父表中存在,防止了无效引用。 - **级联操作**:可以设置级联更新(on update...
3. 在使用复合主键时,要注意避免在多对一或一对多关系中直接使用复合主键作为外键,这可能导致映射问题。 总结,Hibernate对复合主键的处理为开发者提供了灵活性,使得处理复杂数据模型变得更加便捷。通过正确配置...
- 尽量避免联合主键,使用自增字段作为物理主键,以分离业务逻辑和物理逻辑。 - 外键尽量单字段,开启cascade delete以实现级联删除。 3. **索引建立**: - 根据高频检索条件建立索引,以提升查询性能。 - 外键...
- 成绩表(gd):包含学号(联合主键,外键关联学生表)、科目(联合主键,外键关联科目表)以及具体成绩。 五、编程步骤 这部分未提供具体内容,但通常涉及以下环节: - 设计数据库表结构 - 编写Java代码实现业务...
这种情况下,通常会创建一个额外的“关系”表,这个表包含来自两个原始表的主键作为联合主键,以此来表示两个表之间的连接。 通过这些关键概念,关系数据库能够有效地组织和管理复杂的数据,确保数据的一致性和完整...
- **成绩表(wk_grade)**:包含学号(Sno,联合主键,外键关联学生表),课程号(Cno,联合主键,外键关联课程表),成绩(Grade,Float,非空)。 - **老师表(wk_teacher)**:包含老师姓名(Tname,Char(30),非空...