Grails one-to-many - 映射级联

时间:2012-08-12 17:44:29

标签: hibernate grails relational-database

以下是我的情况:

一个名为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

1 个答案:

答案 0 :(得分:2)

持久性的工作总是属于拥有的域类。

在你的情况下,League类负责持久性,即它是拥有类。因此,要删除联赛1对A队的引用,您需要在联盟对象上调用相应的方法。在你的情况下,这将成为:

league1.removeFromTeams(团队)//团队是需要从中删除的Team对象                               //所需的联赛