gpt4 book ai didi

java - 在同一事务中更新两个对象

转载 作者:行者123 更新时间:2023-12-01 22:29:24 24 4
gpt4 key购买 nike

我有两个类定义如下:

public class CallDetail {

@OneToMany(mappedBy = "callDetail", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<Task> tasks = new HashSet<Task>();

}

public class Task {

@ManyToOne
private CallDetail callDetail;

@OneToMany
private Set<Task> preRequisiteTask = new HashSet<Task>();
}

我有两个 CallDetail 类对象,它们已经在数据库中。然后,我尝试在服务层中进行以下更新:

Task countStock = new Task();
Task takeOrder = new Task();
takeOrder.getPreRequisites().add(countStock);

callOne.getTaskInstances.add(countStock);
callTwo.getTaskInstances.add(taskOrder);

try {
callDetailService.updateCallDetail(callOne);
isValid = true;
}catch(Exception e) {
e.printStackTrace();
}
if (isValid) {
callDetailService.updateCallDetail(callDetail);
}

当更新运行时,我得到的错误是:

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: za.co.itdynamics.ccs.domain.Task

当两个 CallDetail 对象彼此相关时(其中 callOne 中的 takeOrder 具有 callTwo 中的 countStock 的先决条件),如何防止发生此错误?是否可以在一个事务中更新两个 CallDetail 对象(callOne 和 callTwo)?

最佳答案

preRequisiteTask 添加级联:

@OneToMany(cascade = CascadeType.ALL)
private Set<Task> preRequisiteTask = new HashSet<Task>();

关于java - 在同一事务中更新两个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28134654/

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