这是我的情况:
称为联盟的类和称为团队的类之间的关系 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 对象 所需的联赛