![](/img/trans.png)
[英]How can I get a printout of a database query from Hibernate and Spring
[英]SEAM/Hibernate: I can't get changes from database during a Conversation
我有一堂課:
@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(Bar是某些實體類)。 然后,bar具有屬性baz,它也是一個實體。
在對話期間,其他用戶可能會修改與我們的酒吧相關的baz對象。 然后,在調用end()時,bar.getBaz()返回baz的舊版本(未修改),並且將其覆蓋到數據庫中。
我試圖使用session.flush(),session.merge(bar),session.merge(bar.getBaz())在end()方法中獲取baz的修改狀態,但是沒有任何效果。 如何避免數據庫污染?
抱歉,我無法給出詳盡的答案。 我不得不從數據庫中重新加載由另一個serverlet修改過的實體。 我通過使用JPA的refresh()
方法做到了這一點。 Hibernate會話還提供了refresh()
方法。 您可能還需要考慮使用@Version
批注進行樂觀鎖定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.