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

首先,order是 SQL 中的保留字。由于 GORM 默认创建一个与您的类同名的表,因此您需要重命名您的类或提供一个不同的名称以在映射到 SQL 表时使用。

例如:

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

另一个问题是Order包含两个关联到User. User您需要告诉 GORM 其中哪一个是从到的双向关联Order。这可以使用 来实现mappedBy,如下所示:

class User {
    String userName

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

}

希望这可以帮助。

于 2014-05-24T13:41:45.453 回答