我目前正在使用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)
提前感谢任何线索或帮助。 =)
答案 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);
}