我已经阅读了很多有关此的问题,似乎没人能正常工作。

我正在使用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'
}

它实际上使用自然键和所有内容按照我想要的方式映射表,它插入了新的用法,但是gui无法检索任何对象并显示错误:“未找到id为null的usuario”

我试图修改show(Long id)方法,但也无济于事,这是我从 Controller 获取的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]
}

最佳答案

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

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

另外,添加以下约束可能是明智的:
static constraints = {
    nick blank:false, nullable:false, unique: true
}

09-03 19:29
查看更多