【发布时间】:2015-01-25 08:36:31
【问题描述】:
我有两个类定义如下:
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)?
【问题讨论】:
标签: java spring hibernate jpa-2.0