使用ID

时间:2015-07-24 04:10:22

标签: java spring hibernate jpa hibernate-entitymanager

我目前正在使用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,因为我不想更改实体本身。

我可以在合并功能上做些什么吗? (但显然合并没有其他参数而不是对象)

entityManager.merge(entityObject)

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

1 个答案:

答案 0 :(得分:1)

如果它是您的主键,则可以使用

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);
}