gpt4 book ai didi

grails - 在 Grails 中将主键 ID 更改为字符串类型

转载 作者:行者123 更新时间:2023-12-04 00:45:05 25 4
gpt4 key购买 nike

我的 Grails 2.0 应用程序定义了一个用户域对象:

class User {

static mapping = {
table "dt_user"
columns {
id column:'user_id', generator:'assigned', type:'string'
}
}

当我尝试在我的 BootStrap 文件中保存一个新用户时:
def user = new User(id: "smith").save(failOnError:true)

我收到以下错误:
| Error 2012-01-13 10:09:42,659 [main] ERROR property.BasicPropertyAccessor  - IllegalArgumentException in class: User, setter method of property: id
| Error 2012-01-13 10:09:42,660 [main] ERROR property.BasicPropertyAccessor - expected type: java.lang.Long, actual value: java.lang.String

我还尝试将 User 类更改为:
class User {
static mapping = {
table "dt_user"
columns {
id column:'user_id', generator:'assigned', type:'string', name:'id'
}
}

String id
}

这使得上述错误消失了。但是我发现这会导致自动生成 id,完全忽略了 generator: 'assigned'条款。

我在这里做错了什么?

最佳答案

看起来像是将它包裹在 columns 中块是罪魁祸首。这在某些时候可能是必需的(在我之前),但只要我使用过 Grails,它就一直是可选的,而且现在显然已经坏了。但是您可以直接声明列映射:

class User {

String id

static mapping = {
table "dt_user"
id column: 'user_id', generator: 'assigned'
}
}

只要该字段声明为字符串并且配置为 assigned它会起作用;没有必要告诉 GORM 它是一个字符串,它可以弄清楚。

关于grails - 在 Grails 中将主键 ID 更改为字符串类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8856336/

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