2014-05-24 31 views
1

我想創建一個域類,像一個用戶可以發佈很多訂單[雙向],一個訂單可以被許多用戶喜歡[單向]。在grails中爲相同的域類創建一對多和多對多

我寫了一個域類,如下圖所示,

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看起來類似於我的問題,但我沒有得到,請幫助。

回答

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'] 

} 

希望這有助於。

+0

謝謝,我明白了:) – vicky