2012-05-18 227 views
2

我遇到了一個應處理一對多和多對多關係的兩個實體的問題。讓我來向你展示一下情況:有用戶創建並參與一些活動。所以一個活動可以有幾個用戶,只有一個活動創建者,同時用戶可以創建並且屬於許多活動。兩個類之間的一對多和多對多的關係? (Grails ORM)

所以我做了這樣的事情:

class User { 

    static hasMany = [activities:Activity, activitiesCreated: Activity] 
    static mappedBy = [activitiesCreated: "creator"] 
... 
} 

class Activity{ 

    static hasMany = [users:User] 
    static belongsTo = [users:User] 
    Usuario creator 
... 
} 

這就提出了一個運行時異常,這是這一個: 在域類[類用戶]和[課外活動]之間沒有定義所有者多對多多種關係。例如:static belongsTo = Activity

如果我不試圖實現一對多,多對多關係可以正常工作,所以它不會成爲問題。

而這正是我堅持:/

回答

4

我不得不第三個實體,實現多對多的關係。例如,假設將活動的實際執行表示爲事件,這意味着事件具有一個或多個活動,時間戳/時間範圍以及一個或多個參與用戶。用戶可以創建一個或多個活動,同樣,活動的所有者將被視爲擁有該活動。

+0

那麼,這當然可以完成這項工作!現在已經太晚了(這裏幾乎是午夜),所以我想明天我會試一試。謝謝! –

+1

@PainyJames你甚至可以在第三個實體中聲明一些輔助方法,使它看起來更像你在帖子中定義的內容。檢查[這個答案](http://stackoverflow.com/a/9783231/760721) – Antoine