一、什么是复合主键?

  • 一张表的主键是由多个字段组成,这个主键就被称为复合主键。  主键是唯一确定某条记录的字段,比如公民的身份证号就是一个主键,因为由身份证号这个主键就可以确定
  • 某个公民。   有一种情况,比如学生成绩这张表中,一个学号无法唯一确定这个学生的成绩,因为这个学生有多科成绩,这时候“学号+学科”才是主键,两者结合才能唯一确定一条记录,也就是成绩。

二、hibernate生成含有复合主键表的映射bean

  2.1  创建有复合主键的表

  这张表有复合主键

  2.2  生成映射文件

  Hibernate 对含有复合主键的表生成bean的时候会把复合主键作为单独的bean独立生成。

2.3  分析Score和ScoreId bean

  2.4  分析总映射文件

三、对有符合主键的bean进行增删改查操作

案例一  Test_CompositeId.java

package action;

import java.io.Serializable;

import org.hibernate.Session;
import org.hibernate.Transaction; import bean.Score;
import bean.ScoreId;
import util.HibernateUtil; public class Test_CompositeId { public static void main(String[] args) {
// Test_CompositeId.select(); // Test_CompositeId.save(); Test_CompositeId.update();
} /**
* 查找
*/
private static void select() { Session session = null;
Transaction tran = null; ScoreId id = new ScoreId();
id.setUserid(1);
id.setSubject("语文"); try {
session = HibernateUtil.getSessionFactory().getCurrentSession();
tran = session.beginTransaction(); Score score = (Score) session.get(Score.class, id); System.out.println("成绩=" + score.getScore()); tran.commit();
} catch (Exception e) {
e.printStackTrace();
tran.rollback();
} } private static void save() {
Session session = null;
Transaction tran = null; ScoreId id = new ScoreId();
id.setSubject("英语");
id.setUserid(1); Score score = new Score();
score.setId(id);
score.setScore(100); try {
session = HibernateUtil.getSessionFactory().getCurrentSession();
tran = session.beginTransaction(); Serializable primarykey = session.save(score);
System.out.println(primarykey); tran.commit();
} catch (Exception e) {
e.printStackTrace();
tran.rollback();
}
} /**
* 执行更新操作
*/
private static void update() { Session session = null; Transaction tran = null; ScoreId id=new ScoreId();
id.setUserid(1);
id.setSubject("英语"); Score score=new Score();
score.setId(id);
score.setScore(12); try {
session = HibernateUtil.getSessionFactory().getCurrentSession();
tran = session.beginTransaction(); session.update(score); tran.commit();
} catch (Exception e) {
e.printStackTrace();
tran.rollback();
} } }

所有代码在这里 : 链接

(九)Hibernate 的复合主键的更多相关文章

  1. hibernate中复合主键的使用

    转: https://blog.csdn.net/shutingwang/article/details/6627730 https://blog.csdn.net/lmy86263/article/ ...

  2. Hibernate 表映射 主键生成策略与复合主键

    主要分析三点: 一.数据表和Java类的映射 : 二.单一主键映射和主键的生成策略 : 三.复合主键的表映射 : 一.数据表和Java类的映射  Hibernate封装了数据库DDL语句,只需要将数据 ...

  3. hibernate复合主键

    需要用到实体类Role的主键和Menu的主键结合起来作为实体类RoleMenu的主键,那么通过Hibernate具体实现如下: RoleMenu实体类:(注意该实体类需要实现Serializable接 ...

  4. Hibernate征途(七)之复合主键映射和集合映射

    把这两种映射放到一起说,是因为这两种映射不像前面的复用型映射.数量和方向型映射那么分类鲜明,所以放到了这个“其他”里面. 复合主键映射 在关系模型中,复合主键和其他的主键方式没有很大区别,但是反映到对 ...

  5. Hibernate复合主键映射

    目录: 1. 实现方式一:将复合主键对应的属性与实体其他普通属性放在一起 2. 实现方式二:将主键属性提取到一个主键类中,实体类只需包含主键类的一个引用 在日常开发中会遇到这样一种情况,数据库中的某张 ...

  6. 步步为营Hibernate全攻略(四)剪不断理还乱之:复合主键 && 组合映射

    一:复合主键 复合主键即两个或多个字段联合起来作为主键,它的通常做法是将主键相关字段抽取出来放到一个单独的类中,但是这样的类是有要求的: 1.      必须实现序列化接口 2.      必须覆盖e ...

  7. 【Hibernate步步为营】--复合主键映射具体解释

    上篇文章讨论了继承映射,它是对象模型中最主要的特性,对于继承映射它的主要区分是字段类型的不同,所以在生成表结构时须要有新列来标识数据的类型,能够使用<subclass>标签并在标签中加入d ...

  8. Hibernate第三篇【主配置文件、映射文件、复合主键映射】

    前言 目前已经学了如何搭建Hibernate的开发环境,以及Hibernate对应的API了-在快速入门还没讲解的就是配置文件是怎么配置的.因此,本博文主要讲解主配置文件以及映射配置文件.. 主配置文 ...

  9. Hibernate主配置文件、映射配置文件以及复合主键查询

    Hibernate.cfg.xml主配置文件 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final\pr ...

随机推荐

  1. DOM 事件有哪些阶段?谈谈对事件代理的理解

    分为三大阶段:捕获阶段--目标阶段--冒泡阶段 事件代理简单说就是:事件不直接绑定到某元素上,而是绑定到该元素的父元素上,进行触发事件操作时(例如'click'),再通过条件判断,执行事件触发后的语句 ...

  2. Win+数字快速启动/切换指定程序

    Windows键+数字,可以快速启动任务栏上的程序 按下按下Win+4桌面将切换到排序第4的程序:页也就是谷歌浏览器. 今天刚发现这个小功能.   文章来源:外星人来地球 欢迎关注,有问题一起学习欢迎 ...

  3. error storage size of my_addr isn't known

  4. SSD论文学习

    SSD: Single Shot MultiBox Detector——目标检测 参考https://blog.csdn.net/u010167269/article/details/52563573 ...

  5. 关于mysql索引---联合索引

    结论: mysql联合索引,联合索引以哪个字段开始很重要. 如果  联合索引字段为  1,2,3,4 那么如果查询条件为  6,7,8,1 这样也会走上面的联合索引 但是如果查询条件不是从1开始那么则 ...

  6. CentOS7下搭建zabbix监控(一)——Zabbix监控端配置

    zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix 能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位 ...

  7. Linux (Ubuntu)安装ssh

    看ssh服务是否启动 打开"终端窗口",输入sudo ps -e |grep ssh 回车有sshd,说明ssh服务已经启动, 如果没有启动,输入sudo service ssh ...

  8. windows 2008+IIS7+Mysql+PHP5.5 + FastCGI环境配置

    一.软件下载 操作系统:Windows Server 2008 R2 Enterprise (1)IIS:windows server2008系统是自带的,但要用户自己全新安装,具体方法见教程下方 ( ...

  9. 【Leetcode_easy】669. Trim a Binary Search Tree

    problem 669. Trim a Binary Search Tree 参考 1. Leetcode_easy_669. Trim a Binary Search Tree; 完

  10. 这一次,真正掌握composer

      思维导图 composer是现代PHP的基石 现代高级编程语言,依赖管理工具是必不可少的.Java有Maven,Python有pip,Nodejs有npm, 而在composer出现之前,PHP只 ...