创建一对多& grails中相同域类的多对多

时间:2014-05-24 10:19:25

标签: grails groovy grails-2.0 groovy-console

我想创建一个域类,一个用户可以发布许多订单[双向],许多用户可以喜欢一个订单[单向]。

我编写了一个域类,如下所示,

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
 } 

但是我收到错误说错误的架构。任何身体请帮忙...

post看起来与我的问题类似,但我没有收到,请帮忙。

1 个答案:

答案 0 :(得分:3)

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

例如:

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

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

class User {
    String userName

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

}

希望这有帮助。