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);
}
我目前正在使用 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);
}