2016-11-04 64 views
1

我得到IllegalArgumentException发生时触发保存操作调用ID的getter。grails 3.2.1/Tomcat 7.0.72 - IllegalArgumentException发生时调用getter的ID

我在将战争部署到Tomcat服务器时遇到此问题。当我执行ran-app时,我能够保存到MySQL数据库中而没有任何问题。

这里是我的代码的详细信息 -

控制器 -

@Transactional 
 
    def save(Handleprops handleprops) { 
 
     if (handleprops == null) { 
 
      transactionStatus.setRollbackOnly() 
 
      notFound() 
 
      return 
 
     } 
 

 
     if (handleprops.hasErrors()) { 
 
      transactionStatus.setRollbackOnly() 
 
      respond handleprops.errors, view:'create' 
 
      return 
 
     } 
 
     handleprops.save flush:true 
 

 
     request.withFormat { 
 
      form multipartForm { 
 
       flash.message = message(code: 'default.created.message', args: [message(code: 'handleprops.label', default: 'Handleprops'), handleprops.id]) 
 
       redirect handleprops 
 
      } 
 
      '*' { respond handleprops, [status: HttpStatus.CREATED] } 
 
     } 
 
    }

域 -

类Handleprops {

static constraints = { 
rbo(blank: false, unique: ['recordType','recordColumn']) 
recordType(blank: false, inList:["10", "20", "30", "40"], unique: ['rbo','recordColumn']) 
recordColumn(blank: false, unique: ['rbo','recordType']) 
variableCode(nullable:true, blank:true) 
startPos(blank: false) 
endPos(blank: false) 
} 

int id 
String rbo 
String recordType 
String recordColumn 
String variableCode 
Integer startPos 
Integer endPos 

}

视图 -

 </g:hasErrors> 
     <g:form action="save"> 
      <fieldset class="form"> 
       <f:all bean="handleprops"/> 
      </fieldset> 
      <fieldset class="buttons"> 
       <g:submitButton name="create" class="save" value="${message(code: 'default.button.create.label', default: 'Create')}" /> 
      </fieldset> 
     </g:form> 

的build.gradle -

dependencies { 
 
    compile "org.springframework.boot:spring-boot-starter-logging" 
 
    compile "org.springframework.boot:spring-boot-autoconfigure" 
 
    compile "org.grails:grails-core" 
 
    compile "org.springframework.boot:spring-boot-starter-actuator" 
 
    compile "org.springframework.boot:spring-boot-starter-tomcat" 
 
    compile "org.grails:grails-dependencies" 
 
    compile "org.grails:grails-web-boot" 
 
    compile "org.grails.plugins:cache" 
 
    compile "org.grails.plugins:scaffolding" 
 
    compile "org.grails.plugins:hibernate5" 
 
    compile "org.hibernate:hibernate-core:5.1.1.Final" 
 
    compile "org.hibernate:hibernate-ehcache:5.1.1.Final" 
 
    console "org.grails:grails-console" 
 
    profile "org.grails.profiles:web" 
 
    runtime "com.bertramlabs.plugins:asset-pipeline-grails:2.11.1" 
 
    runtime "com.h2database:h2" 
 
    testCompile "org.grails:grails-plugin-testing" 
 
    testCompile "org.grails.plugins:geb" 
 
    testRuntime "org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1" 
 
    testRuntime "net.sourceforge.htmlunit:htmlunit:2.18" 
 
    //runtime "org.grails.plugins:myplugin:0.1-SNAPSHOT" \t 
 
    runtime "mysql:mysql-connector-java:5.1.40" 
 
\t 
 
\t //Following code will apply for explict Project war deployment to tomcat server 
 
\t provided "org.springframework.boot:spring-boot-starter-tomcat" 
 
\t 
 
}

application.yml -

dataSource: 
 
    pooled: true 
 
    jmxExport: true 
 
    driverClassName: "com.mysql.jdbc.Driver" 
 
    dialect: "org.hibernate.dialect.MySQL5InnoDBDialect" 
 
    username: "grailsuser" 
 
    password: "grailsuser1" 
 

 
environments: 
 
    development: 
 
     dataSource: 
 
      pooled: true 
 
      dbCreate: create-drop 
 
      url: "jdbc:mysql://127.0.0.1:3306/grailsdbdev?useSSL=false"

** **栈跟踪

ERROR org.hibernate.property.access.spi.GetterMethodImpl - HHH000122: IllegalArgumentException in class: ecommutils.Handleprops, getter method of property: id 
 
ERROR StackTrace - Full Stack Trace: 
 
org.springframework.orm.hibernate5.HibernateSystemException: IllegalArgumentException occurred calling getter of ecommutils.Handleprops.id; nested exception is org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of ecommutils.Handleprops.id 
 
\t at org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:296) 
 
\t at org.grails.orm.hibernate.GrailsHibernateTemplate.convertHibernateAccessException(GrailsHibernateTemplate.java:661) 
 
\t at org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:247) 
 
\t at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:187) 
 
\t at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:110) 
 
\t at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi.performSave(AbstractHibernateGormInstanceApi.groovy:234) 
 
\t at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi.save(AbstractHibernateGormInstanceApi.groovy:154) 
 
\t at org.grails.datastore.gorm.GormEntity$Trait$Helper.save(GormEntity.groovy:151) 
 
\t at org.grails.datastore.gorm.GormEntity$Trait$Helper$save$2.call(Unknown Source) 
 
\t at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 
 
\t at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) 
 
\t at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133) 
 
\t at ecommutils.Handleprops.save(Handleprops.groovy) 
 
\t at ecommutils.Handleprops.save(Handleprops.groovy) 
 
\t at org.grails.datastore.gorm.GormEntity$save.call(Unknown Source) 
 
\t at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 
 
\t at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) 
 
\t at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) 
 
\t at ecommutils.HandlepropsController.$tt__save(HandlepropsController.groovy:38) 
 
\t at ecommutils.HandlepropsController$_save_closure2.doCall(HandlepropsController.groovy) 
 
\t at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
 
\t at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
 
\t at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
 
\t at java.lang.reflect.Method.invoke(Unknown Source) 
 
\t at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
 
\t at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
 
\t at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) 
 
\t at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024) 
 
\t at groovy.lang.Closure.call(Closure.java:414) 
 
\t at groovy.lang.Closure.call(Closure.java:430) 
 
\t at grails.transaction.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:96) 
 
\t at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133) 
 
\t at grails.transaction.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:93) 
 
\t at ecommutils.HandlepropsController.save(HandlepropsController.groovy) 
 
\t at ecommutils.HandlepropsController.$tt__save(HandlepropsController.groovy) 
 
\t at ecommutils.HandlepropsController$_save_closure8.doCall(HandlepropsController.groovy) 
 
\t at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
 
\t at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
 
\t at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
 
\t at java.lang.reflect.Method.invoke(Unknown Source) 
 
\t at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
 
\t at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
 
\t at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) 
 
\t at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024) 
 
\t at groovy.lang.Closure.call(Closure.java:414) 
 
\t at groovy.lang.Closure.call(Closure.java:430) 
 
\t at grails.transaction.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:96) 
 
\t at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133) 
 
\t at grails.transaction.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:93) 
 
\t at ecommutils.HandlepropsController.save(HandlepropsController.groovy) 
 
\t at org.grails.core.DefaultGrailsControllerClass$MethodHandleInvoker.invoke(DefaultGrailsControllerClass.java:222) 
 
\t at org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrailsControllerClass.java:187) 
 
\t at org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter.handle(UrlMappingsInfoHandlerAdapter.groovy:90) 
 
\t at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) 
 
\t at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) 
 
\t at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 
 
\t at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) 
 
\t at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 
 
\t at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
 
\t at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
 
\t at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
 
\t at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) 
 
\t at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
 
\t at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:105) 
 
\t at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
 
\t at org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:77) 
 
\t at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
 
\t at org.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67) 
 
\t at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
 
\t at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) 
 
\t at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
 
\t at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:107) 
 
\t at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
 
\t at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:119) 
 
\t at org.springframework.boot.web.support.ErrorPageFilter.access$000(ErrorPageFilter.java:61) 
 
\t at org.springframework.boot.web.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:94) 
 
\t at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
 
\t at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:112) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
 
\t at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
 
\t at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) 
 
\t at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
 
\t at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
 
\t at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 
 
\t at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
 
\t at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
 
\t at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
 
\t at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) 
 
\t at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083) 
 
\t at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640) 
 
\t at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2517) 
 
\t at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2506) 
 
\t at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
 
\t at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
 
\t at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
 
\t at java.lang.Thread.run(Unknown Source)

强大的文本

回答

1

请升级到Grails 3.2.2,该问题在该版本中得到解决

+0

谢谢。升级3.2.2后它工作得很好 – yankee

相关问题