我试图覆盖由Grails的/格姆提供的动态方法AddTo就*,但它似乎并没有工作。
下面是代码:
class Match {
static hasMany = [players: Player, matchPlayers: MatchPlayer]
void addToPlayers(Player player) {
if (players.add(player)) {
MatchPlayer matchPlayer = new MatchPlayer(match: this, player: player)
matchPlayers.add(matchPlayer)
}
}
}
ma = new Match().save()
ma.addToPlayers(player1)
问题是,调用addToPlayers当我得到以下异常:
java.lang.NullPointerException: Cannot invoke method add() on null object
所以基本上看来,我必须对自己初始化集合“玩家”。
那么,在这之前,我想对格姆机制的一些见解:
1 - 什么是在GORM集的默认实现(我知道这是为java.util.Set但哪一个的实现?)
2 - 是它做的(通过重写addToPlayers法)正确的事? (我的唯一需要的是创建/删除对象MatchPlayer每一个玩家被添加时间/在匹配实例中删除)。 如果是的话,为什么我有一个例外? 你对此有一个更好的设计?
谢谢。