2
期間我無法從數據庫的變化我有一個類:SEAM /休眠:一個會話
@Name("foo")
@Scope(ScopeType.CONVERSATION)
public class Foo {
@In
Session session;
@In
private Conversation conversation;
@RequestParameter
Long barId;
/* outjected fields */
@Out
Bar bar;
/* some attributes and methods */
public void start() {
/* some initializations */
this.bar = (Bar) session.get(Bar.class, barId);
}
public void end() {
/* some actions involving bar and bar.getBaz() */
conversation.end();
}
}
的方法start()被稱爲在對話的開始和初始化屬性欄(欄是一些實體類)。然後,bar有一個屬性baz,它也是一個實體。
在對話過程中,可能會發生其他用戶修改與我們的酒吧相關的baz對象。然後,當調用end()時,bar.getBaz()返回舊的(未修改)版本的baz,此外,將其覆蓋它到數據庫。
我試圖使用session.flush(),session.merge(bar),session.merge(bar.getBaz())在end()方法中獲得baz的修改狀態,但沒有任何效果。我怎樣才能避免數據庫中的污染?
謝謝! session.refresh(bar.getBaz())工作!我無法使用@Version,因爲應用程序已處於生產狀態,並且數據庫架構無法更改。 – janek37 2010-11-28 11:53:50