Search code examples
grailssessionfactorygrails-3.0

Grails 3.1.0.RC1 how to get sessionFactory?


I migrate a project from grails 3.0.11 to grails 3.1.0.RC1 and got the error

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'sessionFactory' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:698) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1175) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
... 48 common frames omitted

What can i do? Thanx


Solution

  • I don't know about 3.1.X, but in 2.4.X and 3.0.11, I use something like this:

    def grailsApplication = Holders.getGrailsApplication()
    def sessionFactory = grailsApplication?.mainContext?.sessionFactory
    

    This does not work in unit tests, but I don't need the session factory then. It does work in development, production and integration tests.