gpt4 book ai didi

java - Hibernate:如果引用不存在,则保存引用

转载 作者:行者123 更新时间:2023-12-01 15:10:33 26 4
gpt4 key购买 nike

我有以下类(class):

@Entity
public class ClassA {
@Column
@Id
private Long id;
@ManyToOne(cascade = javax.persistence.CascadeType.ALL)
@JoinColumn...
private ClassB classB;
public ClassA(ClassB classB){
this.classB = classB;
}
//....
//....
}

@Entity
public class ClassB {
@Column
@Id
private Long id;

@Column(unique=true) //important
private String name;
public ClassB(String name){
this.name = name;
}
//....
//....
}

仅当 ClassB 尚不存在时,我才想保存 ClassA 并保存 ClassB

ClassB b = new ClassB("myName");
ClassA a = new ClassA(b);
session.merge(a); // fine
ClassA a2 = new ClassA(b);
session.merge(a2); // problem with b

当然,我可以检查 ClassB 是否存在并加载它,但我想提高效率。

最佳答案

如果 classB 存在并且 classB 被管理,则 getEntityManager.contains(b) 返回 true。

ClassB b = new ClassB("myName");

if(getEntityManager.contains(b)){
ClassA a = new ClassA(b)
session.merge(a);
}
else{
session.merge(b);
ClassA a = new ClassA(b)
session.merge(b);
}

关于java - Hibernate:如果引用不存在,则保存引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12412689/

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