1

のようなドメインクラスを作成したいのですが、1 人のユーザーが多くの注文を投稿でき [双方向]、1 つの注文が多くのユーザーに気に入られる [一方向] です。

以下に示すようにドメインクラスを作成しました。

Class User {

  String userName;

  List orders 

  static hasMany = [Order]
}

Class Order {

    String orderId

    String orderName

       //Indicates this order belongs to only one user
    static belongsTo =[owner : User ]  // Bidirectional

    //Indicates order can be liked by many users
    static hasMany = [likedUser : User]   //Unidirectional
 } 

しかし、無効なスキーマというエラーが表示されます。どんな体でも助けてください...

この投稿は私の質問に似ていますが、取得できません。助けてください。

4

1 に答える 1

3

まず、orderSQL の予約語です。GORM はデフォルトでクラスと同じ名前のテーブルを作成するため、クラスの名前を変更するか、SQL テーブルにマッピングするときに使用する別の名前を指定する必要があります。

例えば:

class Order {
    static mapping = {
        table 'user_order'
    }
    // ...
}

もう 1 つの問題は、Orderに 2 つの関連付けが含まれていることUserです。Userこれらのうちどれが からへの双方向の関連付けであるかを GORM に伝える必要がありますOrdermappedByこれは、次のように を使用して実現できます。

class User {
    String userName

    static hasMany = [orders: Order]
    static mappedBy = [orders: 'owner']

}

お役に立てれば。

于 2014-05-24T13:41:45.453 に答える