Я попытался переопределить динамический метод addTo *, предоставляемый Grails / GORM, но, похоже, он не работает.
Вот код:
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
Так что, в принципе, мне кажется, что мне нужно инициализировать коллекцию 'Players'.
Что ж, прежде чем сделать это, я хотел бы получить представление о механизме GORM:
1 - Какая реализация по умолчанию для коллекций в GORM (я знаю, что это реализация java.util.Set, но какая?)
2 - Правильно ли это делать (переопределяя метод addToPlayers)? (Моя единственная потребность - создавать / удалять объект MatchPlayer каждый раз, когда игрок добавляется / удаляется в экземпляре матча). Если да, почему у меня есть исключение? У вас есть лучший дизайн для этого?
Спасибо.