gpt4 book ai didi

oracle - 为什么 Grails 自动时间戳字段在 Oracle 中不能始终如一地工作?

转载 作者:行者123 更新时间:2023-12-02 14:33:29 24 4
gpt4 key购买 nike

我正在使用 Grails 内置的 dateCreated 和 lastUpdated 字段。这是域的示例:

class ExampleObject {
String name;
Date dateCreated
Date lastUpdated
}

使用内存 H2 数据库保存此对象时,它工作正常。但是,当我对 Oracle 11g 运行相同的代码时,它会失败并出现以下错误。
org.codehaus.groovy.grails.orm.hibernate.events.PatchedDefaultFlushEventListener:213 Could not synchronize database state with session
org.hibernate.QueryTimeoutException: could not update: [com.example.ExampleObject#948]
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.sql.SQLException: ORA-01407: cannot update ("SOME_USER"."EXAMPLE_OBJECT"."DATE_CREATED") to NULL
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1044)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1329)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3584)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3665)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1352)

我注意到在创建对象然后立即修改它时似乎会出现这个问题。作为引用,我使用的是 Grails 2.3.1 和 Oracle 11.2.0.2.0。我怎样才能解决这个问题?

最佳答案

将以下内容添加到您的 Config.groovy :

grails.gorm.default.mapping = {
id(generator: "sequence-identity")
}

欲了解更多信息,请查看 the discussion on the related Grails defect .

关于oracle - 为什么 Grails 自动时间戳字段在 Oracle 中不能始终如一地工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20148832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com