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);に移動するときに、ライセンスを読み取り専用に残し、ライセンスを永続化しようとしないように休止状態にする方法を教えてください。
アプリケーションでカスケードを使用してライセンスを保存しようとはしていません。ライセンスには、実際に永続化される前に実行するビジネスルールがたくさんあるため、各ライセンスで個別にpersistを呼び出します。これを行うにはどうすればよいですか?これは、永続化では正常に機能しますが、マージでは機能しません。
マージ時に私は取得し続けます
org.hibernate.TransientObjectException: object is an unsaved transient
instance - save the transient instance before merging: com.cmr.Licence