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);
    }
}
相关推荐
bush411 小时前
正点原子imx6ull-uboot,奇怪的问题
linux·学习
dddwjzx11 小时前
嵌入式Linux C应用编程——Framebuffer应用编程
linux·嵌入式
plainGeekDev12 小时前
NullPointerException → Kotlin 空安全
android·java·kotlin
想做小南娘,发现自己是女生喵13 小时前
第 2 章 顺序表和 vector
java·数据结构·算法
今天也想躺ping13 小时前
linux系统移植pjsua库实现sip通话功能
linux·sip·交叉编译
CHANG_THE_WORLD13 小时前
6.多线程的TCP通信
java·网络·tcp/ip
hkj880814 小时前
Linux 总线-设备-驱动(Bus-Device-Driver)完整协作原理
linux·运维·microsoft
Haku Coder14 小时前
Netlify 部署静态网站——0~1保姆级操作教程
服务器·netlify·静态网页托管·免费部署
早点睡啊Y14 小时前
深入学 LangChain 官方文档(一):总览、安装与快速开始
linux·服务器·langchain