我创建了一个基于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。
非常感谢任何帮助。
答案 0 :(得分:1)
看起来您的驱动程序可能是问题所在: 见这里:Similar document problem
由于某些原因,某些版本的驱动程序和自动增量列存在问题。
我会尝试不同版本的驱动程序,看看你是否有运气。
希望有所帮助。