使用EntityManager合并时,可以使用除了id以外的特定列。

7

我目前正在使用Spring和Hibernate框架,有一个实体包含以下内容:

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

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

现在,我想使用数据库中的"ACC_ID"列而不是"ID"来合并一个对象,但是,我不想给accId分配@Id,因为我不想改变实体本身。

在merge函数上有什么我可以做的吗?(但显然,merge函数除了对象之外没有其他参数)

entityManager.merge(entityObject)

感谢您提前提供任何线索或帮助。 =)

这样做不行,因为如果您没有使用主键,Hibernate会出现问题。 - We are Borg
好的!我尝试下面的答案。 - Jerry
1个回答

2
如果使用的是基于主键的话,可以使用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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接