圣杯一对多 - 映射级联



这是我的情况:

称为联盟的类

和称为团队的类之间的关系 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 ]
    ...
}

联赛测试

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 对团队 A 的引用,您需要在联盟对象上调用适当的方法。在您的情况下,这将变成:

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

最新更新