JPA下自定义主键

复制代码
很多情况下需要指定主键:
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "assigned" )
@Id
@Column(name = "org_id")
private String orgId; // 组织机构ID

但是JPA在这种情况下有个问题,不管数据库里有没有数据,一律执行的是update操作

不是想象中没有则插入!

@GeneratedValue (generator = "system-uuid")

@GenericGenerator (name = "system-uuid", strategy = "uuid.hex")

这种更坑爹,当数据库里没有手工设的orgId时,会执行插入操作,但插入的是uuid,不是设定的值!

要想插入指定主键,需要自行处理:

复制代码
@Transactional
public void saveAttRestOfWeekBO(AttRestOfWeekBO bo) {
    if (attRestOfWeekDAO.existsById(bo.getOrgId())) {  // 存在则更新
        attRestOfWeekDAO.save(bo);
    }
    else{
        entityManager.merge(bo);
    }
}
相关推荐
正在走向自律11 小时前
使用atop工具监控Linux系统指标
linux·运维·php·实时监控·atop分析内存
码农颜11 小时前
5.4.1 锁分类
java·数据库·mysql
果果燕12 小时前
实习笔记(一):NFS、Samba、VNC、Git、CMake、systemd、内核、交叉编译
linux·arm开发·c++·笔记·git
linux-hzh13 小时前
百日算法修炼 · Day 03
java·算法
yyy(十一月限定版)13 小时前
017【入门】最小栈
linux·运维·服务器
不负岁月无痕13 小时前
简单理解操作系统结构
java·linux·c语言·开发语言·c++·面试
mister_guo14 小时前
Java线程池参数应该如何设置(ThreadPoolExecutor)
java
余额瞒着我当琳14 小时前
C++模板初阶与STL初探
android·java·c++
淡海水14 小时前
15-02-YooAsset面试篇-Unity架构设计与源码
java·unity·面试·c#·游戏引擎·yooasset
qq_4480111614 小时前
C语言中的指针函数和函数指针
java·c语言·开发语言