Gorm更改主键,找不到id null

时间:2012-11-22 07:13:18

标签: grails gorm scaffolding natural-key

我已经阅读了大量有关此问题的问题,而且似乎没人能让它发挥作用。

我正在使用grails,我正在创建一个没有id作为主键的类。

我收到消息“找不到id null的usuario”。这是我的域类的代码:

    class Usuario implements Serializable{ 

     String nombre 
     String celular 
     String telefono 
     String apellido 
     String password 
     String nick 

     static mapping = { 
      table 'Usuarios' 
      version false 
      id composite: ['nick'] 
} 
} 

我也尝试了正常的方式:

    static mapping = { 
    table 'Usuarios' 
    version false 
     id name: 'nick' 
} 

它实际上以我想要的方式将表格映射到自然键和所有内容,它会插入新的usuarios,但是gui无法检索任何对象并显示错误:“找不到idu null的usuario”

我试图修改show(Long id)方法,但它也没有帮助,这是我从控制器的show方法:

    def show(String nick) {
    def usuarioInstance = Usuario.get(nick)
    if (!usuarioInstance) {
        flash.message = message(code: 'default.not.found.message', args: [message(code: 'usuario.label', default: 'Usuario'), nick])
        redirect(action: "list")
        return
    }

    [usuarioInstance: usuarioInstance]
}

1 个答案:

答案 0 :(得分:2)

您需要指定已分配的生成器:

static mapping = {
    ...
    id column: 'nick', generator: 'assigned'
}

另外,添加以下约束可能是明智的:

static constraints = {
    nick blank:false, nullable:false, unique: true
}