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);
    }
}
相关推荐
星恒随风1 小时前
Linux网络编程:应用层协议究竟是什么?从网络计算器到TCP Socket抽象基类完整实现
linux·网络·笔记·tcp/ip
SDWAN_Cheap1 小时前
物理服务器跟云服务器有什么区别,使用于什么场景
运维·服务器
Smoothcloud润云1 小时前
GPU算力平台推荐:复现实验时,如何判断租用资源是否合适?
服务器·人工智能·深度学习·gpu算力·gpu
Fuyo_11192 小时前
C++ AVL树保姆级详解:从平衡因子到四大旋转机制
java·c++·算法
Sarvartha2 小时前
Date、LocalDate、LocalTime、LocalDateTime、DateTimeFormatter类
java
阿俊-全栈开发2 小时前
LikeShop 多商户 Java 版商城微服务模块拆分与部署架构演进实践
java·微服务·架构·likeshop开源商城·多商户源码
Wang's Blog3 小时前
Java 项目实战:交友项目 - 联系人列表
java·开发语言·交友
我命由我123453 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
叼烟扛炮3 小时前
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
服务器·开发语言·网络·笔记·学习·langchain
香蕉大香蕉(06敬畏市场)3 小时前
MySQL 单点详解(01)
java·数据库·mysql·面试·博客·实习