assigned before calling save & JPA id生成策略
Ⅰ
关于JPA 主键,自定义生成遇到的问题,愚蠢的笔记
Ⅱ
第一次 报错: ids for this class must be manually assigned before calling save()
在报这个问题的时候,一定去代码中去查看自己代码set设ID的逻辑,ID的值没有被设置
下面是我写的代码,可以看出,在上面setId,可是下面BeanUtils工具引用dto对象将master原值给覆盖了
PS: 以下面说明->org.springframework.beans.BeanUtils工具可以将dto对象对应master对象的字段替换,免去了一堆无聊的setter
Master master = new Master();
Master.setId(id);
Master.setAmount(amount);
BeanUtils.copyProperties(dto, master); //此处是错误的,会覆盖前面的值
repository.save(master);
Ⅲ
补充学习, 关于Spring Data JPA提供主键生成,@GeneratorValue 4种策略以及支持的数据库
GenerationType.TABLE ---mysql, oracle, postgresql, kingbase
GenerationType.AUTO ---mysql, oracle, postgresql, kingbase
GenerationType.IDENTITY ---mysql, postgresql, kingbase
GenerationType.SEQUENCE ---oracle, postgresql, kingbase
自定义生成主键,也有策略生成器,@GenericGenerator注解,该注解要配合@GeneratorValue一起使用
@GeneratedValue注解中的generator属性和@GenericGenerator注解中name属性保持一致,strategy属性表示hibernate的主键生成策略
jar : org.hibernate:hibernate-core:5.2.16.Final的DefaultIdentifierGeneratorFactory类中的14种方式
public DefaultIdentifierGeneratorFactory() {
this.register("uuid2", UUIDGenerator.class);
this.register("guid", GUIDGenerator.class);
this.register("uuid", UUIDHexGenerator.class);
this.register("uuid.hex", UUIDHexGenerator.class);
this.register("assigned", Assigned.class);
this.register("identity", IdentityGenerator.class);
this.register("select", SelectGenerator.class);
this.register("sequence", SequenceStyleGenerator.class);
this.register("seqhilo", SequenceHiLoGenerator.class);
this.register("increment", IncrementGenerator.class);
this.register("foreign", ForeignGenerator.class);
this.register("sequence-identity", SequenceIdentityGenerator.class);
this.register("enhanced-sequence", SequenceStyleGenerator.class);
this.register("enhanced-table", TableGenerator.class);
}
注意: 使用的时候必须使用他给的字符串,比如uuid,必须是小写,UUID大写是无效的
示例: ↓↓↓
@Id
@GeneratedValue(generator = "orderId")
@GenericGenerator(name = "orderId",strategy = "uuid")
private String orderId;
----------------------------------------------
assigned before calling save & JPA id生成策略的更多相关文章
- JPA ID生成策略(转---)
尊重原创:http://tendyming.iteye.com/blog/2024985 JPA ID生成策略 @Table Table用来定义entity主表的name,catalog,schema ...
- Caused by: org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): com.qingmu.seller.entity.OrderMaster
org.springframework.orm.jpa.JpaSystemException: ids for this class must be manually assigned before ...
- org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save()
org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before ...
- ids for this class must be manually assigned before calling save():
Caused by: javax.persistence.PersistenceException: org.hibernate.id.IdentifierGenerationException: i ...
- hibernate(四)ID生成策略
一.ID生成策略配置 1.ID生成方式在xml中配置方式: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping P ...
- Hibernate系列之ID生成策略
一.概述 hibernate中使用两种方式实现主键生成策略,分别是XML生成id和注解方式(@GeneratedValue),下面逐一进行总结. 二.XML配置方法 这种方式是在XX.hbm.xml文 ...
- Rhythmk 学习 Hibernate 03 - Hibernate 之 延时加载 以及 ID 生成策略
Hibernate 加载数据 有get,跟Load 1.懒加载: 使用session.load(type,id)获取对象,并不读取数据库,只有在使用返回对象值才正真去查询数据库. @Test publ ...
- 数据库主键ID生成策略
前言: 系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,下面介绍一些常见的ID生成策略. Sequence ID UUID GUID COMB Snowflake 最开始的自增ID为了实现分库 ...
- 可实现的全局唯一有序ID生成策略
在博客园搜素全局唯一有序ID,罗列出来的文章大致讲述了以下几个问题,常见的生成全局唯一id的常见方法 :使用数据库自动增长序列实现 : 使用UUID实现: 使用redis实现: 使用Twitter的 ...
随机推荐
- C++ base64 opencv Mat 转换
static std::string base64Decode(const char* Data, int DataByte) { //解码表 const char DecodeTable[] = { ...
- kuangbin带我飞QAQ 线段树
1. HDU1166 裸线段树点修改 #include <iostream> #include <string.h> #include <cstdio> #incl ...
- Puppet基础应用
Puppet简介 IT基础设施自动化管理工具,作者:Luck Kanies,官方站点:www.puppetlabs.com 管理设施的整个生命周期: provisioning.configuratio ...
- hdu6243
hdu6243结论题,每个的概率是(n-1)/n,然后乘以总数n,结果就是 n-1 #include<iostream> #include<cstdio> #include&l ...
- 万能的pdftk
pdftk (the pdf toolkit) 是一个功能强大的命令行的 PDF 文件编辑软件,可以合并/分割 PDF 文档.对 PDF 文件加密解密.给 PDF 文档加水印.从 PDF 文档中解出附 ...
- c++新特性实验(4)声明与定义:右值引用(C++11)
1.作用 c++11以前,临时对象.字面常量一般情况下不可以再次访问,也不可以修改.右值引用可以解决这个问题. 1.1 实验A #include <iostream> using name ...
- zoj2562 反素数
/* 这题1 <= n <= 1016,暴力肯定是TLM,所以看了大牛求解小于N的反素数的算法,思路大致是这样的: 性质1:一个反素数的质因子一定是从2开始的若干个连续质数. 因此可以枚举 ...
- 读书笔记--Apache.Tomcat.6高级编程 目录
1.Apache Tomcat 2.web的应用:Servlet.JSP及其他 3.Tomcat安装 4.Tomcat架构 5.Tomcat基本配置 6.高级Tomcat特性 7.Web应用程序配置 ...
- 简单描述如何安装配置一个apache开源版hadoop,只描述即可,无需列出完整步骤,能列出步骤更好
1 ) 安装JDK并配置环境变量(/etc/profile) 2) 关闭防火墙 3) 配置hosts文件,方便hadoop通过主机名访问(/etc/hosts) 4) 设置ssh免密码登录 5) 解压 ...
- 【洛谷P1207】双重回文数 【USACO1.2】
P1207 [USACO1.2]双重回文数 Dual Palindromes 题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做"回文数".例如,12321就是一 ...