在Hibernate 5.1.0 /JPA2.1中,是否存在基于唯一键而不是基于主键的合并方法?
我有作为外部系统输入的唯一键的值,但是输入显然不包含我的内部主键。
我希望能够调用EntityManager#merge(entity)
,如果entity
的主键不是null,则Hibernate / JPA使用主键进行合并,但是,如果主键为null,则使用唯一键合并(即如果主键为null,而唯一键对应于数据库中的行,则行将被更新,但如果数据库中没有与唯一键对应的行,则将插入一个新行)。
发布于 2019-05-19 07:28:48
根据定义--即JPA规范1 1文档,又名JSR 338 --没有没有方式来注释所期望的行为,本质上可以简化为:
如果实体的主键不是
null
__,则让Hibernate / JPA使用主键合并,如果主键是null
__,则使用https://en.wikipedia.org/wiki/Unique_key合并
转到@Entity
类。
遗憾的是,除非将这种想法表述为下一个主要JPA规范发布的特性请求,否则就不会有真正的解决方案。然而,在2019年,极不可能在不久的任何时候尝试起草2.3版甚至3版的JPA规范。
尽管如此,您还是可以在Eclipse维护的JPA-API Github项目上提出一个特性请求。
希望能帮上忙。
脚注
在2.2版或以前的2.1/2.0版本中
2见https://projects.eclipse.org/projects/ee4j.jpa时刻表和相应邮件列表中活动量低的情况。
https://stackoverflow.com/questions/35901677
复制相似问题