gpt4 book ai didi

hibernate - 有没有办法基于唯一键而不是主键(在 Hibernate 中)合并 JPA 实体?

转载 作者:行者123 更新时间:2023-12-02 23:12:34 27 4
gpt4 key购买 nike

在 Hibernate 5.1.0/JPA 2.1 中,有没有办法基于唯一键而不是基于主键进行合并?

我有一个唯一键的值作为来自外部系统的输入,但输入显然不包含我的内部主键。

我希望能够调用EntityManager#merge(entity),并且如果entity的主键不为空,则使用Hibernate/JPA要合并的主键,但是,如果主键为空,则使用唯一键进行合并(即如果主键为空,并且唯一键对应于数据库中的一行,则该行将被更新,但是如果数据库中没有与唯一键对应的行,则将插入新行)。

最佳答案

根据定义 - 即 the JPA specification 1 文档又名 JSR 338 - 没有办法注释所需的行为,本质上可以简化为:

if the primary key of entity isn't null, have Hibernate / JPA use the primary key to merge, but, if the primary key is null, use the unique key to merge

@Entity 类。

遗憾的是,除非将此想法制定为下一个主要 JPA 规范版本的功能请求,否则不会有针对此需求的真正解决方案。然而,在 2019 年,短期内尝试起草 2.3 版甚至 3 版 JPA 规范的可能性极小。

尽管如此,请随时通过 JPA-API Github project 提出功能请求。由 Eclipse 基金会维护。

希望有帮助。

脚注

¹ 在版本 2.2 或之前的版本 2.1/2.0 中

² 请参阅 https://projects.eclipse.org/projects/ee4j.jpa 的时间表以及相应邮件列表的事件量较低。

关于hibernate - 有没有办法基于唯一键而不是主键(在 Hibernate 中)合并 JPA 实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35901677/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com