Переопределить ownTo / hasMany в подклассе Grails
У меня есть эти 4 класса:
class Animal {
static hasMany = [legs: Leg]
}
class Cat extends Animal {
static hasMany = [legs: CatLeg] // Should I remove this line?
}
class Leg {
static belongsTo = [animal: Animal]
}
class CatLeg extends Leg {
static belongsTo = [animal: Cat] // Should I remove this line?
}
Это было бы хорошо? Необходимо или рекомендуется снова объявлять эти переменные в подклассах? Какая разница между их добавлением или пропуском?
В настоящее время я использую Grails 2.2.2.
Спасибо,
Jordi
1 ответ
Это зависит от ваших настроек Hibernate. По умолчанию в Grails Hibernate отображает иерархию объектов в 1 таблицу (иерархия на таблицу). Это означает, что вам не нужно снова объявлять ссылку в дочерних классах. Слой GORM позаботится о правильном классе (Leg vs. CatLeg).
Как правило, я бы рекомендовал вообще избегать иерархии объектов и заменять ее композицией, особенно если у вас есть иерархия ссылочных объектов. Я предполагаю, что вы можете столкнуться с проблемами, если в будущем изменятся требования, касающиеся переноса данных в новую модель.