2

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

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

我收到消息“未找到 id 为空的 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 无法检索任何对象并显示错误:“未找到 id 为空的 usuario”

我试图修改 show(Long id) 方法,但它也无济于事,这是我的控制器显示方法:

    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]
}
4

1 回答 1

2

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

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

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

static constraints = {
    nick blank:false, nullable:false, unique: true
}
于 2012-11-22T07:17:08.413 回答