gpt4 book ai didi

Grails 将 sqltype "number"转换为 String

转载 作者:行者123 更新时间:2023-12-02 09:08:01 25 4
gpt4 key购买 nike

我有一个抽象的Event类,它保存所有事件类型共享的属性,在它下面我有两个子类,每个类有一个表(MasterEventParentEvent )。

问题在于,在 MasterEvent 中,id 列的类型为“number”,而在 ParentEvent 中,它的类型为“varchar2”。这意味着当我尝试运行该应用程序时,我得到:

Caused by HibernateException: Wrong column type in * for column event_id. Found: number, expected: varchar2(255 char).

请注意,这是一个旧数据库,因此无法在数据库级别更改列类型。

下面的示例代码应该有助于更好地理解:

Event.groovy


package a

abstract class Event {
String id

static mapping = {
tablePerHierarchy "false"
id column: "id"
}
}

ParentEvent.groovy


package a

class ParentEvent extends Event {
static mapping = {
id column: "id"
}
}

MasterEvent.groovy


package a

class MasterEvent extends Event {
static mapping = {
id column: "id", type: "number"
}
}

我尝试过输入type: number各种组合,但它总是给我同样的错误。

有没有办法将 sqlType 直接转换为 String 或让 grails 忽略此验证?

最佳答案

type: 'number' 不起作用,因为它不是 hibernate basic type

尝试将其更改为类型:'long'(或任何适合您的旧数据库的内容)

另请参阅文档:Link

<小时/>

发表评论后进行编辑

我不知道你在抽象类中做什么,但也许你可以做类似的事情并在抽象类中使用 setter/getter (未测试!):

class MasterEvent extends Event {

Long longId
static mapping = {
longId column: "id"
}

@Override
String getId() {
longId?.toString()
}
}

关于Grails 将 sqltype "number"转换为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15090835/

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