Jar包什么的就看前面几篇文章,接下来介绍复合主键知识

首先是hibernate的配置文件hibernate,cfg.xml基本没有什么变化

<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">123456</property><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/webproject</property><!--反正下面这段话我直接跑去hibernate.dialect包下复制文件路径的时候gg了要指定特定的方言--><property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property><property name="hibernate.show_sql">true</property><!--如果不存在就自动创建一个,如果存在就修改--><property name="hibernate.hbm2ddl.auto">update</property><!--如果不加下面这句话,引入你自己写的配置文件,你将会很绝望--><mapping resource="com/shaoxin/cn/User.hbm.xml"/></session-factory>
</hibernate-configuration>

然后是User表的配置文件用于映射User.hbm.xml这里要注意主键不再是id

<?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="com.shaoxin.cn"><class name="User"  table="user"><!--复合主键--><composite-id name="compositionUser" ><key-property name="username" column="username"></key-property><key-property name="address" column="address"></key-property></composite-id><!--下面的分别是实体类中的属性对应数据库中的字段--><property name="age" column="age"></property></class>
</hibernate-mapping>

然后是User实体类,这里面要把符合主键单独作为一个类写出去,并作为User实体类的一个属性

package com.shaoxin.cn;public class User {private CompositionUser compositionUser;private int age;public CompositionUser getCompositionUser() {return compositionUser;}public void setCompositionUser(CompositionUser compositionUser) {this.compositionUser = compositionUser;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

符合主键类要注意了一定要实现Serializable这个接口

package com.shaoxin.cn;import java.io.Serializable;public class CompositionUser implements Serializable {private String username;private String address;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}}

接下类就是测试类,没什么好说的

package com.shaoxin.cn;import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;public class UserTest {@Testpublic void testUser() throws Exception {Session session = new Configuration().configure().buildSessionFactory().openSession();Transaction tx = session.beginTransaction();CompositionUser compositionUser = new CompositionUser();compositionUser.setAddress("江西南昌");compositionUser.setUsername("邵欣");User user = new User();user.setCompositionUser(compositionUser);user.setAge(23);session.save(user);tx.commit();session.close();}
}

转载于:https://www.cnblogs.com/ShaoXin/p/7091455.html

hibernate之初学复合主键相关推荐

  1. hibernate中表的复合主键映射表

    成绩表Cj:学号和课程号是复合主键 映射文件Cj.hbm.xml: <?xml version="1.0"?> <!DOCTYPE hibernate-mappi ...

  2. Hibernate复合主键映射

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

  3. mapper中mysql复合语句_MyBatis定义复合主键

    前为别名后为主查询getXXX语句中字段 SELECT colid,colname FROM table1 SELECT * FROM table2 WHERE id = #{id} AND name ...

  4. Oracle-No.04 Oracle视图加主键解决hibernate复合主键问题

    2019独角兽企业重金招聘Python工程师标准>>> Oracle视图默认是没有主键的,因此在用hibernate反向生成java类时,会自动采用复合主键,多生成一个类名+ID的类 ...

  5. Hibernate的复合主键映射

    1>.学过hibernate的都知道用<id>来配置主键生成策略,显然,它只能配置主键是单列的表,对于联合主键的情况<id>就无能为力了.今天翻到个复合主键映射的资料,觉 ...

  6. 对逻辑主键、业务主键和复合主键的思考

    这几天对逻辑主键.业务主键和复合主键进行了一些思考,也在网上搜索了一下相关的讨论,相关讨论可以看最下面的参考链接.下面是自己基于 SQL Server 做的一些总结,其他数据库(Oracle.MySQ ...

  7. java复合主键注解_hibernate注解方式实现复合主键

    有时一个实体的主键可能同时为多个,例如同样是之前使用的"CustomerEO"实体,需要通过name和email来查找指定实体,当且仅当name和email的值完全相同时,才认为是 ...

  8. SpringData JPA复合主键

    一.JPA和复合主键的简介        JPA全称Java Persistence API,是一组用于将数据存入数据库的类和方法的集合.JPA通过JDK5.0注解或XML描述对象-关系表的映射关系, ...

  9. springboot jpa 复合主键 联合主键

    为什么80%的码农都做不了架构师?>>>    在开发中,数据库中定义了一个复合主键,这时候在映射不稍微处理下会有一点问题.什么does not define an IdClass错 ...

最新文章

  1. 搭建Ubuntu下c/c++编译环境【转】
  2. C# 中Excel导出,可以自由设置导出的excel格式
  3. 移植opencv2.4.9到itop4412开发板
  4. 数据结构——二叉树的遍历
  5. Facebook开源动画库 POP-POPBasicAnimation运用
  6. 小米9android q测试版,基于Android Q的MIUI来了 小米9尝鲜
  7. php多维数组交集,求数组差/交集函数-php数组函数(二)
  8. 3种类型的程序员:“虫族”,“人族”,“神族”(转载)
  9. web基础知识梳理(笔记)
  10. seriespandas索引操作练习
  11. 利用Procexp工具监控Windows平台上的Oracle数据库性能
  12. 一、Rose HA切换时自动启动服务
  13. 嵌入式单片机及外设(硬件)知识基础一
  14. GymBase英文版主题-健身主题-WordPress响应式
  15. 爱了,这18个 Python 高效编程技巧真香
  16. html+css实战146-banner-版权区域-布局
  17. 方兴未艾的计算广告学——微软亚洲研究院高级研究员 刘铁岩
  18. 系统***版块整理内容(超详细内容汇总)持续更新
  19. c++重启资源管理器代码
  20. GB/T 25000.51-2016解读系列之维护性

热门文章

  1. 面对来势凶猛的社区电商 小商店的路在哪里?
  2. 当一个人把一个行业说得特别容易赚钱的时候
  3. 12306外包给阿里巴巴、IBM等大企业做是否可行?
  4. 华为智能手表WATCH GT2运动版和时尚版有什么区别?
  5. 你用什么型号手机呢?体验如何?
  6. 以太坊eip150和eip158
  7. [leetcode] 24. Swap Nodes in Pairs
  8. ssms 连接 ssis_SSIS连接管理器:OLE DB,ODBC,ADO.NET
  9. sql 时态表的意义_在SQL Server 2016中拉伸时态历史记录表
  10. add jar and proxy repo