休眠/域NullPointerException?

| 上下文:我正在尝试将Grails项目从1.0.3升级到1.3.7,并且遇到了很多问题。我刚遇到很多DuplicateMappingExceptions,因为该项目具有Hibernate XML文件和域文件。我将域文件移至src / groovy,但现在发现自己遇到了新的NullPointerException,而且我不知道如何解决该问题:
2011-05-30 10:27:29,037 [main] ERROR context.GrailsContextLoader  - Error executing bootstraps: Error creating bean with name \'messageSource\': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name \'transactionManager\': Cannot resolve reference to bean \'sessionFactory\' while setting bean property \'sessionFactory\'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name \'sessionFactory\': Invocation of init method failed; nested exception is java.lang.NullPointerException
org.springframework.beans.factory.BeanCreationException: Error creating bean with name \'messageSource\': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name \'transactionManager\': Cannot resolve reference to bean \'sessionFactory\' while setting bean property \'sessionFactory\'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name \'sessionFactory\': Invocation of init method failed; nested exception is java.lang.NullPointerException
    at org.grails.tomcat.InlineExplodedTomcatServer.doStart(InlineExplodedTomcatServer.groovy:112)
    at org.grails.tomcat.InlineExplodedTomcatServer$doStart.callCurrent(Unknown Source)
    at org.grails.tomcat.TomcatServer.start(TomcatServer.groovy:97)
    at grails.web.container.EmbeddableServer$start.call(Unknown Source)
    at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy:158)
    at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy)
    at _GrailsSettings_groovy$_run_closure10.doCall(_GrailsSettings_groovy:280)
    at _GrailsSettings_groovy$_run_closure10.call(_GrailsSettings_groovy)
    at _GrailsRun_groovy$_run_closure5.doCall(_GrailsRun_groovy:149)
    at _GrailsRun_groovy$_run_closure5.call(_GrailsRun_groovy)
    at _GrailsRun_groovy.runInline(_GrailsRun_groovy:116)
    at _GrailsRun_groovy.this$4$runInline(_GrailsRun_groovy)
    at _GrailsRun_groovy$_run_closure1.doCall(_GrailsRun_groovy:59)
    at RunApp$_run_closure1.doCall(RunApp:33)
    at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381)
    at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415)
    at gant.Gant$_dispatch_closure7.doCall(Gant.groovy)
    at gant.Gant.withBuildListeners(Gant.groovy:427)
    at gant.Gant.this$2$withBuildListeners(Gant.groovy)
    at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)
    at gant.Gant.dispatch(Gant.groovy:415)
    at gant.Gant.this$2$dispatch(Gant.groovy)
    at gant.Gant.invokeMethod(Gant.groovy)
    at gant.Gant.executeTargets(Gant.groovy:590)
    at gant.Gant.executeTargets(Gant.groovy:589)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name \'transactionManager\': Cannot resolve reference to bean \'sessionFactory\' while setting bean property \'sessionFactory\'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name \'sessionFactory\': Invocation of init method failed; nested exception is java.lang.NullPointerException
    ... 25 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name \'sessionFactory\': Invocation of init method failed; nested exception is java.lang.NullPointerException
    ... 25 more
Caused by: java.lang.NullPointerException
    ... 25 more
看起来NullPointerException位于:
Caused by: java.lang.NullPointerException
    at org.codehaus.groovy.grails.commons.DefaultGrailsDomainClassProperty.equals(DefaultGrailsDomainClassProperty.java:506)
    at org.codehaus.groovy.grails.commons.GrailsDomainConfigurationUtil.configureDomainClassRelationships(GrailsDomainConfigurationUtil.java:167)
    at org.codehaus.groovy.grails.commons.DomainClassArtefactHandler.initialize(DomainClassArtefactHandler.java:67)
    at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.initializeArtefacts(DefaultGrailsApplication.java:738)
    at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.initializeArtefacts(DefaultGrailsApplication.java:721)
    at org.codehaus.groovy.grails.commons.DefaultGrailsApplication.addArtefact(DefaultGrailsApplication.java:682)
    at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsHibernateUtil.configureDomainClass(GrailsHibernateUtil.java:163)
    at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsHibernateUtil.configureHibernateDomainClasses(GrailsHibernateUtil.java:117)
    at org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsAnnotationConfiguration.buildSessionFactory(GrailsAnnotationConfiguration.java:124)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:860)
    at org.codehaus.groovy.grails.orm.hibernate.ConfigurableLocalSessionFactoryBean.newSessionFactory(ConfigurableLocalSessionFactoryBean.java:126)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:779)
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
    ... 461 more
这看起来好像是我刚刚移至src / groovy的Domain Classes(类本身或Hibernate XML)中的错误一样。我在项目中同时拥有域类和休眠xml。 这是我发现的几个链接,它们显示了相似的堆栈跟踪。在Hibernate XML和Domain类之间的关系中,这看起来确实很时髦: 类似的堆栈跟踪1 类似的堆栈跟踪2     
已邀请:
        看起来您不应该在非域类上使用Hibernate映射。异常表明存在配置为Grails找不到目标属性的关系(请参见此处,第167行)。也就是说,某个类的
persistentProperties
中为null。 我几乎不知道为什么会发生该错误,但是首先将所有映射的类移至3,然后删除所有XML映射,然后开始在HQL上运行该应用程序,然后一步一步地添加XML配置。这将很快缩小搜索范围。 您也可以尝试调试Grails本身-源代码可用。     
        诊断起来很困难,因为堆栈跟踪实际上没有任何有用的信息。我会尝试增加日志记录以查看是否提供任何线索,然后开始逐个禁用插件以查看是否可以进一步解决。     

要回复问题请先登录注册