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);
    }
}
相关推荐
疯狂打码的少年16 小时前
【数据库技术】关系模型基本概念(关系/属性/元组/键)
java·服务器·数据库·笔记
Mr数据杨17 小时前
【Codex】用学生入学评估模块建立新生能力画像
android·java·javascript·django·codex·项目开发
2601_9620562318 小时前
Spring Boot 入门 与 无法解析符号 springframework 的解决
java·spring boot·后端
Thomas214318 小时前
Java scala 数组 链表
java·链表·scala
刃神太酷啦18 小时前
Linux 系统 MySQL 完整安装配置教程:从卸载 MariaDB 到优化 my.cnf----《Hello MySQL!》(1)
android·linux·c语言·c++·mysql·leetcode·mariadb
亚历克斯神18 小时前
低代码与 AI 的融合趋势——从可视化搭建到自然语言生成应用
java·spring·微服务
赵文宇(温玉)18 小时前
OpenEuler24.03 SP4 系统安装(欧拉/麒麟V10)
linux·openeuler·欧拉
学长毕业设计19 小时前
基于SpringBoot的瑜伽馆网站的设计与实现(源码+文档+讲解视频)
java·spring boot·后端
一嘴一个橘子19 小时前
nginx 常用命令(在 nginx 目录下执行)
java
harmful_sheep19 小时前
java group by常见用法
java·开发语言·python