2

私はこれについてたくさんの質問を読みましたが、誰もそれを機能させていないようです。

私はgrailsを使用しており、主キーとしてidを持たないクラスを作成しています。

「usuarionotfoundwithidnull」というメッセージが表示されます。これは私のドメインクラスのコードです:

    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はオブジェクトを取得できず、「usuario not foundwithidnull」というエラーが表示されます。

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]
}
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 に答える