- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 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 isnull
, 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/
我是一名优秀的程序员,十分优秀!