尝试 运行 一个简单的动态脚手架 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 中的列是:
- 配置
NUMBER
- 姓名
VARCHAR2
- 类型
VARCHAR2
- 值
CLOB
- 描述
VARCHAR2
- 状态
NUMBER
因此,它看起来应该可以工作,但是当我 运行 应用程序并转到 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。
我正在尝试为 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 中的列是:
- 配置
NUMBER
- 姓名
VARCHAR2
- 类型
VARCHAR2
- 值
CLOB
- 描述
VARCHAR2
- 状态
NUMBER
因此,它看起来应该可以工作,但是当我 运行 应用程序并转到 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。