【6.0】组合主键映射
通过组件来实现组合主键的步骤:
1.编写组合主键的类,该类必须实现Serializable接口,生成对应的get/set方法;最好实现equals和hashCode方法.
public class ScoreId implements Serializable{private int stuId;//学生编号private int subjectId;//科目编号public int getStuId() {return stuId;}public void setStuId(int stuId) {this.stuId = stuId;}public int getSubjectId() {return subjectId;}public void setSubjectId(int subjectId) {this.subjectId = subjectId;}
}
2.在主类中引用对应组件
/*** 成绩* */
public class Score {private ScoreId scoreId;private double result;//成绩public ScoreId getScoreId() {return scoreId;}public void setScoreId(ScoreId scoreId) {this.scoreId = scoreId;}public double getResult() {return result;}public void setResult(double result) {this.result = result;}
}
3.映射文件的编写
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.siggy.pojo"><class name="Score"><!-- 组合主键 --><composite-id name="scoreId" class="ScoreId"><key-property name="stuId"></key-property><key-property name="subjectId"></key-property></composite-id><property name="result"/></class>
</hibernate-mapping>
4.测试代码【运行该方法:public void testSave() throws HibernateException{}】
package cn.siggy.test;import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.Test;import cn.siggy.pojo.Score;
import cn.siggy.pojo.ScoreId;
import cn.siggy.util.HibernateUtil;public class HibernateTest {@Testpublic void testCreateDB(){Configuration cfg = new Configuration().configure();SchemaExport se = new SchemaExport(cfg);//第一个参数 是否生成ddl脚本 第二个参数 是否执行到数据库中se.create(true, true);}@Testpublic void testSave() throws HibernateException{Session session = null;Transaction tx = null;try{session = HibernateUtil.getSession();tx = session.beginTransaction();Score s = new Score();ScoreId sid = new ScoreId();sid.setStuId(2);sid.setSubjectId(6);s.setResult(89);s.setScoreId(sid);session.save(s);tx.commit();}catch (HibernateException e) {if(tx!=null)tx.rollback();e.printStackTrace();throw e;}finally{HibernateUtil.closeSession();}}
}
5.测试结果
控制台信息:
数据库表变化:
转载于:https://www.cnblogs.com/chxbar/p/6675849.html
【6.0】组合主键映射相关推荐
- JPA映射组合主键时错误:No default constructor for entity
我们在使用JPA对历史问题处理时,会涉及到组合主键的处理.处理的思路如下: 使用@Embeddabel定义一个组合组键ID ID实现SErializable接口 声明一个protected的构造方法 ...
- Hibernate的复合主键映射
1>.学过hibernate的都知道用<id>来配置主键生成策略,显然,它只能配置主键是单列的表,对于联合主键的情况<id>就无能为力了.今天翻到个复合主键映射的资料,觉 ...
- NHibernate Mapping Attribute实现复合主键映射
当我在学习使用NHibernate Mapping Attribute的时候,遇到复合主键映射问题,查询了很多资料,也向朋友请教过,由于相关资料不多,中间走了些弯路,好在最终较好解决了,现记录分享如下 ...
- Hibenate主键映射和Hibernate常用的标示生成器
l Hibenate主键映射 自然主键:充当主键的字段具有一定的含义,是构成记录的组成部分. 代理主键:充当主键的字段本身没有什么含义 Hibernate常用的标示生成器 标示生成器名称 描述 As ...
- 添加mysql组合主键_mysql怎么添加复合主键?
在mysql中可以在创建表时添加复合主键,其语法规则是"PRIMARY KEY [字段1,字段2,-,字段n]",表示主键由多个字段联合组成. 主键约束即在表中定义一个主键来唯一确 ...
- 在一表中设置组合主键(两个字段组合成一个主键)
首先一个表是不能有两个主键的.但是可以有两个字段组合成一个主键,这就是为什么有时候表里为什么会有两个字段都有主键的标志,那是因为他们组合成了一个主键了. 我们可以先删除了原来的主键再 ...
- java联合主键_hibernate联合主键映射(注解版)
1.联合主键的映射三种写法 实体类: package com.zhouwei.po; import javax.persistence.Entity; import javax.persistence ...
- 关于mybatis的association和collection主键映射问题
多对一:association 第一种方式 嵌套方式: 基本数据 Mapper接口,因为简写,就没有写另一个mapper了,写在一个里面,如果要写另一个mapper里面,引用的时候,从名称空间来引用 ...
- Hibernate复合主键映射
目录: 1. 实现方式一:将复合主键对应的属性与实体其他普通属性放在一起 2. 实现方式二:将主键属性提取到一个主键类中,实体类只需包含主键类的一个引用 在日常开发中会遇到这样一种情况,数据库中的某张 ...
最新文章
- Keepalived+LVS+Nginx+DRBD+Heartbeat+Zabbix集群架构
- php参数一个字符串数组,PHP字符串控制台参数到数组
- #include algorithm 常用函数
- PHP学习方向-进阶2(三)
- pointnet与pointnet++
- 《跟我学java》_《跟我学Java——基础篇02》
- PHP 循环删除无限分类子节点
- 前端学习(610):js执行过程
- linux netstat服务,linux netstat查看服务和端口状态
- 12123两小时没付款怎么办_机械厂上班的男朋友,一天十小时,周末不休,没时间陪我怎么办?...
- 员工评价系统 winform
- 2020前端最新面试题(vue篇)
- PyTorch系列入门到精通——autograd与逻辑回归
- VM Workstation 虚拟机安装Ghost XP教程
- WebService cxf简单入门附视频教程
- Shell脚本学习指南(一)——入门
- 经典语录(个人喜欢)
- mysql 查询dual报错_MYSQL基础02(查询)
- 测试VPS服务器脚本,一检测VPS网络速度,硬盘性能等
- 领导者必备的13个管理套路,用好了,下属死心塌地为你卖命
热门文章
- Node.js nrm
- torch.nn与torch.nn.functional
- PythonEggs
- 16 The Terminal and Job Control
- pycharm的项目文件中包括什么_婚庆策划是什么?婚庆策划都包括哪些项目
- debian9.4网络配置及永久静态默认路由
- 实现裸金属服务器的安全微分段
- php/eq,thinkphp中eq标签的使用
- lwip路由实现_TCP超时与重传《LwIP协议栈源码详解——TCP/IP协议的实现》
- linux php7 yum 卸载,Linux_在Centos中yum安装和卸载软件的使用方法,安装一个软件时 
yum -y install h - phpStudy...