Hibernate06_ID生成策略
来源:互联网 发布:为知笔记导出 苹果 编辑:程序博客网 时间:2024/05/22 05:05
第一种native , id自增, 相当于primary key auto_increment;
Book实体类
package com.chb.model;public class Book { private int id; private String name; private double price; public Book() {} public Book(int id, String name, double price) { super(); this.id = id; this.name = name; this.price = price; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; }}
Book.hbm.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" ><!-- 映射对应的package --><hibernate-mapping package="com.chb.model"> <!-- 实体类Book与数据库中表Book_info对应 --> <class name="Book" table="book_table"> <id name="id" column="book_id"> <!-- id主键, 设为自增 --> <generator class="native"></generator> </id> <property name="name" column="book_name"></property> <property name="price" column="book_price"></property> </class></hibernate-mapping>
测试成功:
查看数据库, 可以发现id自动为1
二、生成策略为assign
修改Book.hbm.xml<generator class="assigned"></generator>
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" ><!-- 映射对应的package --><hibernate-mapping package="com.chb.model"> <!-- 实体类Book与数据库中表Book_info对应 --> <class name="Book" table="book_table"> <id name="id" column="book_id"> <!-- id不会自动生成, 需要用户指定--> <generator class="assigned"></generator> </id> <property name="name" column="book_name"></property> <property name="price" column="book_price"></property> </class></hibernate-mapping>
使用DROP TABLE book_table
将数据库中的book_table删除
ID生成策略改为assigned, 第一次执行,ID自动为1
再次执行测试, 报如下错误。因为id需要开发人员自己指定。
ERROR: Duplicate entry '0' for key 'PRIMARY'
三、生成策略为uuid
Book.hbm.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" ><!-- 映射对应的package --><hibernate-mapping package="com.chb.model"> <!-- 实体类Book与数据库中表Book_info对应 --> <class name="Book" table="book_table"> <id name="id" column="book_id"> <!-- 会自动生成一个字符串, 主键必须为String类型 --> <generator class="uuid"></generator> </id> <property name="name" column="book_name"></property> <property name="price" column="book_price"></property> </class></hibernate-mapping>
将Book实体类的id改为String
package com.chb.model;public class Book { private String id; private String name; private double price; public Book() {} public Book(String id, String name, double price) { super(); this.id = id; this.name = name; this.price = price; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; }}
删除数据库中的book_table
测试
阅读全文
0 0
- Hibernate06_ID生成策略
- Hibernate标识生成策略
- 数据库主键生成策略
- 数据库主键生成策略
- 预览图生成策略
- Hibernate标识生成策略
- hibernate主键生成策略
- 数据库主键生成策略
- 预览图生成策略
- hibernate 标识符生成策略
- Hibernate 主键生成策略
- 主键生成策略
- JPA ID生成策略
- Hibernate 主键生成策略
- hibernate 主键生成策略
- JPA ID生成策略
- Hibernate 主键生成策略
- Hibernate 主键生成策略
- 七层协议和四层协议
- linux 网络
- 大型网站架构演变和知识体系
- mysql 1067问题
- Javascript map如何实现
- Hibernate06_ID生成策略
- 十道海量数据处理面试题与十个方法大总结
- [NOIP模拟赛]天文观测
- Kafka学习笔记:在zookeeper中考察kafka目录结构
- 1163: 亲和串(字符串)
- php PDO 方式操作数据库小结
- 听说你也想做用户体验设计师?
- RecyclerView 左滑(仿QQ左滑删除)
- 俞敏洪:人与人的差距是怎么拉开的?