2012-05-07 5 views

答えて

1
class Book implements Serializable { 
     String code 
    String description 

    static mapping = { 
     table 'BookStore' 
     version false 
     id composite: ['code'] 
     code column: 'COD' 
     description column: 'DSC' 
    } 

    boolean equals(other) { 
     if (!(other instanceof Book)) { 
      return false 
     } 
     other.code == code 
    } 

    int hashCode() { 
     def builder = new HashCodeBuilder() 
     builder.append code 
     builder.toHashCode() 
    } 

} 
1

私はあなたの質問が正しい理解していれば、documentationでマッピング内のセクションは、あなた例えば

を助けるべきで、以下は動作するはずです:

class Book { 

    String code 
    String description 

    static mapping = { 
     table 'BookStore' 
     version false 
     code column: 'COD' 
     description column: 'DSC' 
    } 
} 

をまた、DataSource.groovy内、dbCreate = "update"を作りますあなたが使用している適切な環境下でこれについてはDataSourceのドキュメントを参照してください。

これが役に立ちます。

+0

私はあなたの例ではidが、私はこの例外を取得 をマッピングしていなかったので、 エラー2012-05-07 20:21:21479 [プール-6-スレッド-1] ERROR hbm2ddl.SchemaUpdate - 失敗: alter table 'BookStore' ID番号を追加する(19,0)not null |エラー2012-05-07 20:21:21,479 [pool-6-thread-1]エラーhbm2ddl.SchemaUpdate - ORA-01758:必須(NOT NULL)の列を追加するには、表が空である必要があります – Karen

+0

完全な表の説明を教えてください。私はあなたが質問で与えたものは何でも行った。 –

+0

CODとDSCの2つのカラムだけを持つテーブルを作成してから、あなたの例を試してみると、id(grailsを追加するデフォルトのカラム)がマップされなかったので動作しません。 実際には問題はマップIDですが、 'BookStore'テーブルには2列しかありません。 IDを複合キーで設定しようとしましたが、マップする方法はわかりません。 – Karen

関連する問題