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);
    }
}
相关推荐
bro_Java6663 小时前
《二叉树的基础知识、操作方法与代码示例》
java·数据结构·算法·广度优先
幼儿园蛋小黄3 小时前
从设备树到 ARM 驱动:嵌入式 Linux 驱动开发学习总结
linux·arm开发·驱动开发
dishugj3 小时前
HANA集群计划内切换与维护操作
java·linux·数据库
yuniko-n3 小时前
【JUC】线程间通信
java·开发语言
yuniko-n3 小时前
【JUC】关于 Java 线程介绍
java·开发语言
该逃避避3 小时前
出海广告跑不起来怎么办?动态住宅IP助力广告跑量
运维·服务器·网络
HelloWorld工程师3 小时前
@Primary 注解
java·spring
一条泥憨鱼3 小时前
【从0开始学习计算机网络】| ip协议-ttl-标识-分片偏移-ip分片与重组
运维·服务器·网络
爱吃香菜的初学者5 小时前
十四.Linux——消息队列
linux·运维·开发语言
Apipi*12 小时前
30天速通Linux 第六章信号及信号处理
linux·运维·信号处理