У меня есть два связанных entites:почему спящий режим DB обновление после выселить
@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;
}
...
}
Я хочу использовать данные DreamTaskInfo из БД только для чтения использования, поэтому я делаю это:
DreamTaskInfo task = this.get(id);//query from db
getSession().evict(task);//getSession().contains(task)==false
Но я считаю, out Hibernate всегда выполняет обновление sql для этой задачи при сбросе. Наконец, я использую getSession(). Clear() вместо evict, и он работает. Может быть, с нетерпением получить или связать результат в чем-то в сессии? На самом деле, я ничего не могу изменить вручную и спящий режим обновления автоматически, поэтому он не имеет ничего общего с этим question.
Возможный дубликат [Hibernate: evict() постоянный объект при сохранении его изменений] (http://stackoverflow.com/questions/6836326/hibernate-evict-a-persistent-object-while-storing-its-changes) –
Можете ли вы опубликовать запрос обновления вместе с его параметрами. Стоит отлаживать, чтобы узнать, почему было создано обновление. –
@ Vlad Mihalcea, на самом деле он обновляет каждое поле записи со значением запроса из БД. – yuxh