Grails 2.3域类保存崩溃应用程序

时间:2014-03-20 01:15:41

标签: grails grails-2.3

我创建了一个基于Grails的Web应用程序,如果我尝试在BootStrap.groovy文件中保存任何内容,它会在启动时崩溃。如果我注释掉save()文件中的所有BootStrap.groovy语句,则应用程序启动并且所有表都已成功创建。

这是我的BootStrap.groovy文件:

class BootStrap
{
    def init = { ServletContext context ->

        // Register Custom Object Marshallers
        WebApplicationContextUtils.getWebApplicationContext(context).getBean("customObjectMarshallers").register()


        // Contact Type Tags
        [
            [ tag: "preferred" ],
            [ tag: "default" ],
            [ tag: "mobile" ],
            [ tag: "cell" ],
            [ tag: "work" ],
            [ tag: "home" ],
        ].each {
            def type = TypeTag.findByTag(it.tag)
            if(!type) {
                TypeTag tag = new TypeTag(tag: it.tag)
                tag.validate()
                tag.save()

                def foo = "bar"
            }
        }
    }

这就是日志中发生的事情:

Configuring Spring Security Core ...
... finished configuring Spring Security Core
| Error 2014-03-19 18:47:41,439 [localhost-startStop-1] ERROR context.GrailsContextLoader  - Error initializing the application: null
Message: null
    Line | Method
->>  423 | initMetaDataColumnIndexes        in oracle.jdbc.driver.AutoKeyInfo
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    396 | initMetaData                     in     ''
|     77 | getMetaData . . . . . . . . . .  in oracle.jdbc.driver.OracleReturnResultSet
|     39 | doCall                           in BootStrap$_closure1_closure3
|     27 | doCall . . . . . . . . . . . . . in BootStrap$_closure1
|    308 | evaluateEnvironmentSpecificBlock in grails.util.Environment
|    301 | executeForEnvironment . . . . .  in     ''
|    277 | executeForCurrentEnvironment     in     ''
|    262 | run . . . . . . . . . . . . . .  in java.util.concurrent.FutureTask
|   1145 | runWorker                        in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . . . . . . . . . . . .  in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run                              in java.lang.Thread
Disconnected from the target VM, address: '127.0.0.1:60455', transport: 'socket'

BootStrap.groovy文件中,第39行是tag.save()语句。如果我评论该行,那么应用程序启动就好了。 tag.validate()行执行正常,此时对象中没有错误。

我正在运行Java 1.7 update 45和Grails 2.3.7。我将grails-hibernate插件更新到3.6.10.10。我在lib文件夹中也有ojdbc7.jar文件。 Oracle版本为11gR2。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

看起来您的驱动程序可能是问题所在: 见这里:Similar document problem

由于某些原因,某些版本的驱动程序和自动增量列存在问题。

我会尝试不同版本的驱动程序,看看你是否有运气。

希望有所帮助。