基于唯一键而不是主键的JPA/Hibernate中的合并
在JPA或Hibernate中,是否可以基于主键以外的唯一键将新实体(没有主键值)合并到持久性上下文中 还是所有JPA/Hibernate合并都只在主键上执行 如果一个简单的方法调用无法实现这一点,那么我只能选择:基于唯一键而不是主键的JPA/Hibernate中的合并,hibernate,jpa,unique-constraint,jpa-2.1,unique-key,Hibernate,Jpa,Unique Constraint,Jpa 2.1,Unique Key,在JPA或Hibernate中,是否可以基于主键以外的唯一键将新实体(没有主键值)合并到持久性上下文中 还是所有JPA/Hibernate合并都只在主键上执行 如果一个简单的方法调用无法实现这一点,那么我只能选择: 将现有主键替换为唯一键 编写代码,使用唯一键中的属性值查找任何现有实体。如果我要这样做,我想我会编写一个静态方法,查找@UniqueConstraint注释,并根据@UniqueConstraint中的属性搜索现有实体。我会尝试合并到为任何@UniqueConstraint找到的第一
@UniqueConstraint
注释,并根据@UniqueConstraint
中的属性搜索现有实体。我会尝试合并到为任何@UniqueConstraint
找到的第一个实体中。如果没有匹配项,那么我可以只保留新实体Hibernate只需要
@Id
属性的唯一键,并且,尽管通常主键用于此目的,但是您可以为@Id
属性使用任何唯一键
此外,您可以使用@Id
属性的主键和@NaturalId
属性的唯一键。您可以根据实体的自然id获取实体,然后将其合并到不同的会话中,因为合并需要实体而不是标识符