![](/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.