grails 3.2.1 / Tomcat 7.0.72 - 调用 id 的 getter 时发生 IllegalArgumentException

grails 3.2.1 / Tomcat 7.0.72 - IllegalArgumentException occurred calling getter of id

我在触发保存操作时调用 ID 的 getter 时发生 IllegalArgumentException。

将 war 部署到 Tomcat 服务器时,我遇到了这个问题。当我执行 运行-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] }
        }
    }

域-

class 扶手道具 {

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" 
    runtime "mysql:mysql-connector-java:5.1.40"
 
 //Following code will apply for explict Project war deployment to tomcat server
 provided "org.springframework.boot:spring-boot-starter-tomcat"
 
}

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

强文本

请升级到 Grails 3.2.2,该版本已解决该问题