JPA映射亲子与多个同一类映射
问题描述:
我有如下表JPA映射亲子与多个同一类映射
Task
---------------------
id
name
Action
--------------------
id
name
task_fk
target_id
我下面JPA映射
class Task{
Long id;
@OneToMany(mappedBy = "task", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Action> actions = new ArrayList<>();
// other code
}
class Action{
Long id;
@ManyToOne
@JoinColumn(name = "target_id")
Task targetTask;
@ManyToOne
@JoinColumn(name = "task_fk", nullable = false)
Task task;
}
,当我试图挽救任务那么它失败具有任务具有持续错误的目标任务设置的动作
if (entityInformation.isNew(task)) {
entityManager.persist(task);
} else {
entityManager.merge(task);
}
Error:org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing :
答
您设置了targetTask
或其他字段的值尚未持续/存在。 作为您的例外规定:
对象引用一个未保存的瞬态的实例
尝试向我们展示了由导致错误 – Abdelhak
:org.hibernate.TransientPropertyValueException:对象引用一个未保存的瞬态的实例 - 保存瞬态在冲刷之前的实例: – NFE
尝试在'Action'中将'@ ManyToOne'更改为'@ManyToOne(cascade = CascadeType.ALL)' – pirho