2016-02-09 2 views
0

Я создал проект Grails 3.1.0 с 5 классами домена 3 из Доменов - это Пользователь, Роль и UserRole из плагина Spring Security, а остальные 2 находятся в от 1 до многих отношений.Hibernate дает исключение NullPointerException при запуске моего Grails 3.1.0 Project

Я подключаюсь к MySQL 5.6, и мое dbCreate настроено на обновление.

При запуске проекта с чистой базой данных создаются таблицы, и все хорошо, но когда я запускаю проект, используя базу данных с уже созданными таблицами, запуск не выполняется с помощью исключения NullPointerException.

Мне нужно бросить и создать базу данных каждый раз, когда я запускаю свое приложение.

StackTrace:

ERROR grails.boot.GrailsApp - Application startup failed 
java.lang.NullPointerException: null 
at org.hibernate.type.descriptor.java.AbstractTypeDescriptor.extractHashCode(AbstractTypeDescriptor.java:84) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.type.AbstractStandardBasicType.getHashCode(AbstractStandardBasicType.java:216) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.type.AbstractStandardBasicType.getHashCode(AbstractStandardBasicType.java:220) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.type.EntityType.getHashCode(EntityType.java:391) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.type.ComponentType.getHashCode(ComponentType.java:258) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.engine.spi.EntityKey.generateHashCode(EntityKey.java:76) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.engine.spi.EntityKey.<init>(EntityKey.java:71) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.internal.AbstractSessionImpl.generateEntityKey(AbstractSessionImpl.java:327) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:175) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:138) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:209) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:715) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:707) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:702) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 
    at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi$_performInsert_closure5.doCall(AbstractHibernateGormInstanceApi.groovy:256) ~[grails-datastore-gorm-hibernate-core-5.0.0.RELEASE.jar:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_91] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_91] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_91] 
    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_91] 
    at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1426) ~[springloaded-1.2.5.RELEASE.jar:1.2.5.RELEASE] 
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) ~[groovy-2.4.5.jar:2.4.5] 
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) ~[groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) ~[groovy-2.4.5.jar:2.4.5] 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019) ~[groovy-2.4.5.jar:2.4.5] 
    at groovy.lang.Closure.call(Closure.java:426) ~[groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.ConvertedClosure.invokeCustom(ConvertedClosure.java:53) ~[groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.ConversionHandler.invoke(ConversionHandler.java:105) ~[groovy-2.4.5.jar:2.4.5] 
    at com.sun.proxy.$Proxy93.doInHibernate(Unknown Source) ~[na:na] 
    at org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:196) ~[grails-datastore-gorm-hibernate4-5.0.0.RELEASE.jar:na] 
    at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:140) ~[grails-datastore-gorm-hibernate4-5.0.0.RELEASE.jar:na] 
    at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:110) ~[grails-datastore-gorm-hibernate4-5.0.0.RELEASE.jar:na] 
    at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi.performInsert(AbstractHibernateGormInstanceApi.groovy:253) ~[grails-datastore-gorm-hibernate-core-5.0.0.RELEASE.jar:na] 
    at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi.save(AbstractHibernateGormInstanceApi.groovy:146) ~[grails-datastore-gorm-hibernate-core-5.0.0.RELEASE.jar:na] 
    at org.grails.datastore.gorm.GormEntity$Trait$Helper.save(GormEntity.groovy:140) ~[grails-datastore-gorm-5.0.0.RELEASE.jar:na] 
    at org.grails.datastore.gorm.GormEntity$Trait$Helper$save$2.call(Unknown Source) ~[na:na] 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) [groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) [groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133) [groovy-2.4.5.jar:2.4.5] 
    at com.equineedge.photostore.AuthUserAuthRole.save(AuthUserAuthRole.groovy) ~[main/:na] 
    at com.equineedge.photostore.AuthUserAuthRole.save(AuthUserAuthRole.groovy) ~[main/:na] 
    at org.grails.datastore.gorm.GormEntity$save.call(Unknown Source) ~[na:na] 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) [groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) [groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) [groovy-2.4.5.jar:2.4.5] 
    at com.equineedge.photostore.AuthUserAuthRole.create(AuthUserAuthRole.groovy:56) ~[main/:na] 
    at com.equineedge.photostore.AuthUserAuthRole$create.call(Unknown Source) ~[na:na] 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) [groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) [groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:141) [groovy-2.4.5.jar:2.4.5] 
    at BootStrap.createDummyUsers(BootStrap.groovy:16) ~[main/:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_91] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_91] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_91] 
    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_91] 
    at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1426) ~[springloaded-1.2.5.RELEASE.jar:1.2.5.RELEASE] 
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) ~[groovy-2.4.5.jar:2.4.5] 
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) ~[groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:384) ~[groovy-2.4.5.jar:2.4.5] 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019) ~[groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69) ~[groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52) [groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154) [groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:158) [groovy-2.4.5.jar:2.4.5] 
    at BootStrap$_closure1.doCall(BootStrap.groovy:6) ~[main/:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_91] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_91] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_91] 
    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_91] 
    at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1426) ~[springloaded-1.2.5.RELEASE.jar:1.2.5.RELEASE] 
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) ~[groovy-2.4.5.jar:2.4.5] 
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) ~[groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) ~[groovy-2.4.5.jar:2.4.5] 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019) ~[groovy-2.4.5.jar:2.4.5] 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1084) ~[groovy-2.4.5.jar:2.4.5] 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019) ~[groovy-2.4.5.jar:2.4.5] 
    at groovy.lang.Closure.call(Closure.java:426) ~[groovy-2.4.5.jar:2.4.5] 
    at groovy.lang.Closure.call(Closure.java:420) ~[groovy-2.4.5.jar:2.4.5] 
    at grails.util.Environment.evaluateEnvironmentSpecificBlock(Environment.java:419) ~[grails-bootstrap-3.1.0.jar:3.1.0] 
    at grails.util.Environment.executeForEnvironment(Environment.java:412) ~[grails-bootstrap-3.1.0.jar:3.1.0] 
    at grails.util.Environment.executeForCurrentEnvironment(Environment.java:388) ~[grails-bootstrap-3.1.0.jar:3.1.0] 
    at org.grails.web.servlet.boostrap.DefaultGrailsBootstrapClass.callInit(DefaultGrailsBootstrapClass.java:62) ~[grails-web-3.1.0.jar:3.1.0] 
    at org.grails.web.servlet.context.GrailsConfigUtils.executeGrailsBootstraps(GrailsConfigUtils.java:65) ~[grails-web-3.1.0.jar:3.1.0] 
    at org.grails.plugins.web.servlet.context.BootStrapClassRunner.onStartup(BootStrapClassRunner.groovy:53) ~[grails-plugin-controllers-3.1.0.jar:3.1.0] 
    at grails.boot.config.GrailsApplicationPostProcessor.onApplicationEvent(GrailsApplicationPostProcessor.groovy:238) ~[grails-core-3.1.0.jar:3.1.0] 
    at grails.boot.config.GrailsApplicationPostProcessor.onApplicationEvent(GrailsApplicationPostProcessor.groovy) ~[grails-core-3.1.0.jar:3.1.0] 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:163) ~[spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:136) ~[spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:381) ~[spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:335) ~[spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:855) ~[spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:140) ~[spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) ~[spring-context-4.2.4.RELEASE.jar:4.2.4.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) ~[spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE] 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:764) ~[spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE] 
    at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:357) ~[spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:305) ~[spring-boot-1.3.1.RELEASE.jar:1.3.1.RELEASE] 
    at grails.boot.GrailsApp.run(GrailsApp.groovy:54) [grails-core-3.1.0.jar:3.1.0] 
    at grails.boot.GrailsApp.run(GrailsApp.groovy:353) [grails-core-3.1.0.jar:3.1.0] 
    at grails.boot.GrailsApp.run(GrailsApp.groovy:342) [grails-core-3.1.0.jar:3.1.0] 
    at grails.boot.GrailsApp$run.call(Unknown Source) [grails-core-3.1.0.jar:3.1.0] 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) [groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) [groovy-2.4.5.jar:2.4.5] 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133) [groovy-2.4.5.jar:2.4.5] 
    at photostore.Application.main(Application.groovy:8) [main/:na] 

createDummyUsers() Функция

private createDummyUsers(){ 
    //System Administrator User and Role 
    AuthUser adminUser = AuthUser.findOrSaveWhere(username: 'admin', password: 'adminPass') 
    AuthRole adminRole = AuthRole.findOrSaveWhere(authority: 'ROLE_ADMIN') 

    AuthUserAuthRole.create adminUser, adminRole, true <-- LINE 16 

    //API User and Role 
    AuthUser apiUser = AuthUser.findOrSaveWhere(username: 'api', password: 'apiPass') 
    AuthRole apiRole = AuthRole.findOrSaveWhere(authority: 'ROLE_API') 

    AuthUserAuthRole.create apiUser, apiRole, true 

    //User User and Role 
    AuthUser userUser = AuthUser.findOrSaveWhere(username: 'user', password: 'userPass') 
    AuthRole userRole = AuthRole.findOrSaveWhere(authority: 'ROLE_USER') 

    AuthUserAuthRole.create userUser, userRole, true 

    //All Roles User 
    AuthUser rootUser = AuthUser.findOrSaveWhere(username: 'root', password: 'rootPass') 

    AuthUserAuthRole.create rootUser, adminRole, true 
    AuthUserAuthRole.create rootUser, apiRole, true 
    AuthUserAuthRole.create rootUser, userRole, true 
} 

AuthUserAuthRole домена Порожденных безопасности Plugin

package com.equineedge.photostore 

import grails.gorm.DetachedCriteria 
import groovy.transform.ToString 
import org.apache.commons.lang.builder.HashCodeBuilder 

@ToString(cache=true, includeNames=true, includePackage=false) 
class AuthUserAuthRole implements Serializable { 

private static final long serialVersionUID = 1 

AuthUser authUser 
AuthRole authRole 

AuthUserAuthRole(AuthUser u, AuthRole r) { 
    this() 
    authUser = u 
    authRole = r 
} 

@Override 
boolean equals(other) { 
    if (!(other instanceof AuthUserAuthRole)) { 
     return false 
    } 

    other.authUser?.id == authUser?.id && other.authRole?.id == authRole?.id 
} 

@Override 
int hashCode() { 
    def builder = new HashCodeBuilder() 
    if (authUser) builder.append(authUser.id) 
    if (authRole) builder.append(authRole.id) 
    builder.toHashCode() 
} 

static AuthUserAuthRole get(long authUserId, long authRoleId) { 
    criteriaFor(authUserId, authRoleId).get() 
} 

static boolean exists(long authUserId, long authRoleId) { 
    criteriaFor(authUserId, authRoleId).count() 
} 

private static DetachedCriteria criteriaFor(long authUserId, long authRoleId) { 
    AuthUserAuthRole.where { 
     authUser == AuthUser.load(authUserId) && 
     authRole == AuthRole.load(authRoleId) 
    } 
} 

static AuthUserAuthRole create(AuthUser authUser, AuthRole authRole, boolean flush = false) { 
    def instance = new AuthUserAuthRole(authUser: authUser, authRole: authRole) 
    instance.save(flush: flush, insert: true) 
    instance 
} 

static boolean remove(AuthUser u, AuthRole r, boolean flush = false) { 
    if (u == null || r == null) return false 

    int rowCount = AuthUserAuthRole.where { authUser == u && authRole == r }.deleteAll() 

    if (flush) { AuthUserAuthRole.withSession { it.flush() } } 

    rowCount 
} 

static void removeAll(AuthUser u, boolean flush = false) { 
    if (u == null) return 

    AuthUserAuthRole.where { authUser == u }.deleteAll() 

    if (flush) { AuthUserAuthRole.withSession { it.flush() } } 
} 

static void removeAll(AuthRole r, boolean flush = false) { 
    if (r == null) return 

    AuthUserAuthRole.where { authRole == r }.deleteAll() 

    if (flush) { AuthUserAuthRole.withSession { it.flush() } } 
} 

static constraints = { 
    authRole validator: { AuthRole r, AuthUserAuthRole ur -> 
     if (ur.authUser == null || ur.authUser.id == null) return 
     boolean existing = false 
     AuthUserAuthRole.withNewSession { 
      existing = AuthUserAuthRole.exists(ur.authUser.id, r.id) 
     } 
     if (existing) { 
      return 'userRole.exists' 
     } 
    } 
} 

static mapping = { 
    id composite: ['authUser', 'authRole'] 
    version false 
} 
} 

ответ

1

Проверьте this post, как обновить hibernate до 5.x.

Here вы можете проверить фактические версии спящего режима.

+0

Я следил за вашими ссылками и обновлялся до спящего режима 5, но у меня все еще такая же проблема. –

+0

Не могли бы вы показать мне источник 'BootStrap.createDummyUsers()' и жирной строки 16 + источник класса домена 'com.equineedge.photostore.AuthUserAuthRole' (как отредактировать ваш вопрос) –

+0

Я добавил исходный код. –