EntityManager 使用 id 以外的特定列合并

EntityManager merge using specific column other than id

我目前正在使用 Spring 和 Hibernate 框架,并且有一个实体:

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="ID")
private Long id;

@Column(name="ACC_ID")
private Long accId;

现在,在特定情况下,我想使用列 "ACC_ID" 而不是 "ID" 合并数据库中的对象,但是,我不想将 @Id 分配给 accId,因为我不想更改实体本身。

合并功能有什么我可以做的吗? (但显然 merge 除了对象之外没有其他参数)

entityManager.merge(entityObject)

在此先感谢您提供任何线索或帮助。 =)

entityManager.merge(entityObject)如果是你的主键就可以用

如果它是另一个独特的约束,你必须自己处理它。首先尝试找到具有该值的实体(使用查询)。
如果找到匹配项,请在正常保存之前将主键复制到您的新实体。

例如:

public Entity save(Entity entity, boolean rollback) {
    // look for a match, you'll have to implement your own method here
    Entity match = getEntityByValue("column_name", entity.getMergeColumn());

    if (match != null) {
        // copy the primary key
        entity.setId(match.getId());
    }

    // save the entity
    save(entity, rollback);
}