hibernate之初学复合主键
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之初学复合主键相关推荐
- hibernate中表的复合主键映射表
成绩表Cj:学号和课程号是复合主键 映射文件Cj.hbm.xml: <?xml version="1.0"?> <!DOCTYPE hibernate-mappi ...
- Hibernate复合主键映射
目录: 1. 实现方式一:将复合主键对应的属性与实体其他普通属性放在一起 2. 实现方式二:将主键属性提取到一个主键类中,实体类只需包含主键类的一个引用 在日常开发中会遇到这样一种情况,数据库中的某张 ...
- mapper中mysql复合语句_MyBatis定义复合主键
前为别名后为主查询getXXX语句中字段 SELECT colid,colname FROM table1 SELECT * FROM table2 WHERE id = #{id} AND name ...
- Oracle-No.04 Oracle视图加主键解决hibernate复合主键问题
2019独角兽企业重金招聘Python工程师标准>>> Oracle视图默认是没有主键的,因此在用hibernate反向生成java类时,会自动采用复合主键,多生成一个类名+ID的类 ...
- Hibernate的复合主键映射
1>.学过hibernate的都知道用<id>来配置主键生成策略,显然,它只能配置主键是单列的表,对于联合主键的情况<id>就无能为力了.今天翻到个复合主键映射的资料,觉 ...
- 对逻辑主键、业务主键和复合主键的思考
这几天对逻辑主键.业务主键和复合主键进行了一些思考,也在网上搜索了一下相关的讨论,相关讨论可以看最下面的参考链接.下面是自己基于 SQL Server 做的一些总结,其他数据库(Oracle.MySQ ...
- java复合主键注解_hibernate注解方式实现复合主键
有时一个实体的主键可能同时为多个,例如同样是之前使用的"CustomerEO"实体,需要通过name和email来查找指定实体,当且仅当name和email的值完全相同时,才认为是 ...
- SpringData JPA复合主键
一.JPA和复合主键的简介 JPA全称Java Persistence API,是一组用于将数据存入数据库的类和方法的集合.JPA通过JDK5.0注解或XML描述对象-关系表的映射关系, ...
- springboot jpa 复合主键 联合主键
为什么80%的码农都做不了架构师?>>> 在开发中,数据库中定义了一个复合主键,这时候在映射不稍微处理下会有一点问题.什么does not define an IdClass错 ...
最新文章
- 搭建Ubuntu下c/c++编译环境【转】
- C# 中Excel导出,可以自由设置导出的excel格式
- 移植opencv2.4.9到itop4412开发板
- 数据结构——二叉树的遍历
- Facebook开源动画库 POP-POPBasicAnimation运用
- 小米9android q测试版,基于Android Q的MIUI来了 小米9尝鲜
- php多维数组交集,求数组差/交集函数-php数组函数(二)
- 3种类型的程序员:“虫族”,“人族”,“神族”(转载)
- web基础知识梳理(笔记)
- seriespandas索引操作练习
- 利用Procexp工具监控Windows平台上的Oracle数据库性能
- 一、Rose HA切换时自动启动服务
- 嵌入式单片机及外设(硬件)知识基础一
- GymBase英文版主题-健身主题-WordPress响应式
- 爱了,这18个 Python 高效编程技巧真香
- html+css实战146-banner-版权区域-布局
- 方兴未艾的计算广告学——微软亚洲研究院高级研究员 刘铁岩
- 系统***版块整理内容(超详细内容汇总)持续更新
- c++重启资源管理器代码
- GB/T 25000.51-2016解读系列之维护性
热门文章
- 面对来势凶猛的社区电商 小商店的路在哪里?
- 当一个人把一个行业说得特别容易赚钱的时候
- 12306外包给阿里巴巴、IBM等大企业做是否可行?
- 华为智能手表WATCH GT2运动版和时尚版有什么区别?
- 你用什么型号手机呢?体验如何?
- 以太坊eip150和eip158
- [leetcode] 24. Swap Nodes in Pairs
- ssms 连接 ssis_SSIS连接管理器:OLE DB,ODBC,ADO.NET
- sql 时态表的意义_在SQL Server 2016中拉伸时态历史记录表
- add jar and proxy repo