2017-10-12 186 views
0

我有如下表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 : 
+0

尝试向我们展示了由导致错误 – Abdelhak

+0

:org.hibernate.TransientPropertyValueException:对象引用一个未保存的瞬态的实例 - 保存瞬态在冲刷之前的实例: – NFE

+0

尝试在'Action'中将'@ ManyToOne'更改为'@ManyToOne(cascade = CascadeType.ALL)' – pirho

回答

0

您设置了targetTask或其他字段的值尚未持续/存在。 作为您的例外规定:

对象引用一个未保存的瞬态的实例