後に更新DBを休止:なぜ私は2つの関連entitesを持って追い出し
@Entity
@DynamicUpdate(true)
public class DreamTaskInfo {
private DreamInfo dreamInfo;
@ManyToOne
@JoinColumn(name = "DREAM_INFO_ID", nullable = false)
public DreamInfo getDreamInfo() {
return dreamInfo;
}
...
}
@Entity
@DynamicUpdate(true)
public class DreamInfo {
private Set<DreamTaskInfo> dreamTasks = new LinkedHashSet<>();
@OneToMany(mappedBy = "dreamInfo",cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@OrderBy("remindTime")
public Set<DreamTaskInfo> getDreamTasks() {
return dreamTasks;
}
...
}
私は読み取り専用の使用のためにDBからDreamTaskInfoデータを使用したいので、私はこれを行う:
DreamTaskInfo task = this.get(id);//query from db
getSession().evict(task);//getSession().contains(task)==false
しかし、私は見つけますHibernateはフラッシュ時に常にこのタスクに対してupdate sqlを実行します。 最後に、私はevictの代わりにgetSession()。clear()を使用しています。 セッションで何かを熱心に取得または関連付けすることはありますか? 実際に私は何も手動で変更せず、自動的に更新を休止するので、これはこのquestionとは関係ありません。
永続オブジェクトの[Hibernate:evict()]に、変更を保存している可能性のある複製](http://stackoverflow.com/questions/6836326/hibernate-evict-a-persistent-object-while-storing-its-changes) ) –
更新クエリをそのパラメータと共に転記できますか。アップデートがなぜ生成されたのかを見るためにはデバッグする価値があります。 –
@Vlad Mihalcea、実際には、レコードのすべてのフィールドをDBからの値クエリで更新します。 – yuxh