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);
    }
}
相关推荐
zho_uzhou44 分钟前
ubuntu服务端运行vue网页步骤
linux·服务器·vue.js·ubuntu
ltl10 小时前
纠删码原理与存储效率
linux
ltl10 小时前
MinIO 原理和架构:机制、AGPL 与上游 archived 风险
linux
mifengxing10 小时前
LeetCode 41.缺失的第一个正数|Hard题O(n)+O(1)最优解法深度解析
java·算法·leetcode·排序算法
林浩杨_10 小时前
linux搜索命令(grep+sed)
linux·命令模式
W.W.H.10 小时前
将驱动编译成模块并安装到rootfs
linux·物联网·wifi·rootfs·驱动
ltl10 小时前
io_uring 在生产环境翻车实录:内核 bug、资源泄漏和你不知道的限制
linux
ltl10 小时前
内存分配器擂台:jemalloc vs tcmalloc vs mimalloc vs glibc
linux
ltl10 小时前
Zero Copy 的肮脏秘密:在什么时候反而更慢
linux
数据知道11 小时前
宽字节注入、二次注入、堆叠注入:高级 SQLi 专题
linux·运维·安全·网络安全