【发布时间】:2012-10-10 02:49:08
【问题描述】:
public class Application{
@Id
private Long id;
@OneToMany(mappedBy = "application")
private List<Licence> licences = new ArrayList<Licence>();
...
}
public class Licence{
@Id
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ID", nullable = false)
private Application application;
...
}
当我进入 em.merge(application); 时,如何让休眠状态以只读方式将许可证留在应用程序对象中,而不是尝试保留许可证;
我没有尝试在应用程序中使用 Cascade 保存许可证。许可证在实际持久化之前需要运行很多业务规则,因此我将分别在每个许可证上调用persist。我该怎么做呢 ?这适用于持久化但不适用于合并。
在合并时我不断得到
org.hibernate.TransientObjectException: object is an unsaved transient
instance - save the transient instance before merging: com.cmr.Licence
【问题讨论】: