9

我已经阅读了网络上的各种文章,但在这一点上它们似乎相当分散。究竟我需要在我的配置和方法中做什么才能获得休眠会话。我正在尝试对存储过程进行一些直接的 sql 调用。我有一个大型代码库,我从 Ruby 移植了很多静态方法和存储过程调用。如果我需要使用 sessionFactory,那么如何访问它?

4

3 回答 3

27

从静态方法中,您可以从应用程序上下文中提取 sessionFactory bean:

import org.codehaus.groovy.grails.commons.ApplicationHolder as AH
...
def ctx = AH.application.mainContext
def sessionFactory = ctx.sessionFactory
def session = sessionFactory.currentSession
于 2009-12-14T14:03:07.757 回答
23

如果它在服务或控制器中,您只需要声明 sessionFactory

默认会话工厂

让它注入。之后你可以参考

sessionFactory.currentSession

使用它。

查看 hibernate-filter 插件(文件 HibernateFilterGrailsPlugin.groovy)了解如何注入一堆使用会话的方法。

于 2009-12-14T03:50:50.343 回答
14

您可以使用withSession

Book.withSession { session ->
    session.clear()
}

更多信息

于 2014-05-18T09:36:33.587 回答