我有一个看起来像这样的实体:
@Entity
public class Candidate {
...
@Transient
private JobApplication mostRecentApplication
...
}
@Entity
public class JobApplication{
...
@ManyToOne
private Candidate candidate;
...
}
为了在将Candidate
作为json对象返回时消除循环引用,我将Candidate
设置为null
JobApplication
Candidate
}}。但是,当我保留已更新的Candidate
时,它会使用JobApplication
null
更新Candidate
,从而终止关联。这是一个错误还是我做错了什么?我的印象是JPA提供者应该忽略使用Hibernate和Spring Data的@Transient.
注释的字段。
答案 0 :(得分:0)
我将
Candidate
设置为null
JobApplication
Candidate
。
问题是你可以自由地将mostRecentApplication
的值更改为你想要的任何值,但是改变现有关系的属性可能会产生不利影响。
// change value to null
candidate.setMostRecentApplication( null );
// change value to a detached instance
candidate.setMostRecentApplication( new JobApplication(...) );
但如果您执行以下操作,则可以观察您所看到的内容
candidate.getMostRecentApplication().setSomeProperty( null );
在这种情况下,您不会更改mostRecentApplication
,而是改变someProperty
的{{1}}状态。如果mostRecentApplication
不是分离和非托管实例,则在事务上下文中将更改该值。