如何在存储过程进行更改后刷新hibernate对象

时间:2013-07-19 03:40:58

标签: java hibernate grails stored-procedures gorm

在我的grails应用程序中,我们调用的存储过程可能会更新数千条记录。在存储过程调用之后,我需要以json格式将许多这些记录发送回UI。但是,在存储过程完成后,hibernate继续看到旧对象。我已经在每个对象上尝试了evict()并使用HQL再次加载它们,但没有用。

解决这个问题的最佳途径是什么。

1 个答案:

答案 0 :(得分:2)

答案在于问题。 :)使用refresh()。请参阅this

如果要完全清除hibernate会话,可以使用session.clear()。请参阅clear。 为此,您需要掌握当前会话,您可以通过两种方式进行:

  1. 抓住sessionFactory,获取当前会话并清除相同内容。 grailsApplication.mainContext.sessionFactory.currentSession.clear()

  2. 使用withSession关闭。

    DomainABC.withSession{s-> s.clear()}