尝试 运行 一个简单的动态脚手架 Grails 应用程序导致 ORA-00904 错误

Trying to run a simple dynamic scaffolding Grails app results in an ORA-00904 error

我正在尝试为 Oracle 12 数据库中的 table 创建一个简单的 CRUD,因此我创建了一个 Grails 应用程序,在 application.yml 中传递了数据库凭据,创建了一个控制器和域 class 命名为 ConfigTest (该列在实际数据库中称为 CONFIG_TEST )并为其添加了一些简单的代码。

域名class:

package moduleprototype

class ConfigTest {
    int configid
    String name
    String type
    String value
    String description
    int status

    static constraints = {
    }
}

控制器:

package moduleprototype

class ConfigTestController {

    static scaffold = ConfigTest
}

我的 table 中的列是:

因此,它看起来应该可以工作,但是当我 运行 应用程序并转到 http://localhost:8080/ConfigTest 时,我得到:

2019-01-08 15:06:28.552 ERROR --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : ORA-00904: "THIS_"."VERSION": invalid identifier

2019-01-08 15:06:28.856 ERROR --- [nio-8080-exec-1] o.g.web.errors.GrailsExceptionResolver : OracleDatabaseException occurred when processing request: [GET] /ConfigTest ORA-00904: "THIS_"."VERSION": invalid identifier

为什么会这样?我究竟做错了什么?根据我收集到的信息,此类错误通常与命名问题有关,但在这里,名称似乎没问题,模型也遵循 Grails 名称处理原则(或者看起来如此)。

编辑:我也尝试过自定义静态映射,以确保所有内容都映射到我认为它所做的,所以我将其添加到模型中 class:

static mapping = {
    table 'CONFIG_TEST'

    configid column: 'CONFIGID'
    name column: 'NAME'
    type column: 'TYPE'
    value column: 'VALUE'
    description column: 'DESCRIPTION'
    status column: 'STATUS'

}

但是一点用也没有,还是一样的错误:(

Grails 期望在您的 table 上有一个名为 version 的列,除非您在域 class 的映射块中禁用它,例如:

static mapping = {
    version false
}

版本列用于乐观锁定。

有关完整信息,请参阅 the docs