gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:20:35 25 4
gpt4 key购买 nike

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

关于java - EntityManager 使用 id 以外的特定列合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31602035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com