2012-08-12 113 views
0

這是我的情況:Grails一對多 - 映射級聯

一個叫做League的類和一個叫Team的關係1-N。

一個聯盟可以有多個球隊。 在單元測試中,我試圖指定:球隊A加入聯盟1並且比同一球隊A加入聯盟2.

發生什麼事是兩個聯盟都指向同一球隊A.但是球隊A只能聯盟2.

將聯盟1的引用刪除到A隊的最好方法是什麼?

編輯:

class League { 

    static hasMany = [ teams: Team, schedules: Schedule ] 

    String name 
    ... 
} 


class Team { 
    static belongsTo = [ league: League ] 
    ... 
} 

LeagueTest

def league1 = new League(name: "Serie A") 
def league2 = new League(name: "Premier League") 

def team = new Team(name: 'AC Milan', stadium: 'San siro', nation: 'Italy') 

league1.addToTeams(team) 
assert league1.numOfTeams() > league2.numOfTeams() //true 

league2.addToTeams(team) 
assert league1.numOfTeams() == league2.numOfTeams() //true 

assert team.league == league2 //true 
assert team.league == league1 //false 
+0

怎樣的關係看在你域級? (belongsTo,hasMany是我指的) – marko 2012-08-13 08:07:11

+0

請顯示您的代碼。爲什麼你將一個團隊分配給兩個聯盟? – 2012-08-13 13:01:45

回答

2

持久性的工作總是屬於所屬領域類。

在你的情況下,聯盟類負責持久性,即它是擁有類。因此,要將聯賽1的引用移除給A隊,您需要在聯盟對象上調用適當的方法。你的情況,這將成爲:

league1.removeFromTeams(隊)//隊從 //所需的聯賽刪除其需要團隊對象

+0

我希望你知道擁有類是一個靜態belongsTo分配的,在你的情況下它是聯盟 – 2012-08-14 09:14:15