Использование статического свойства hasOne в классе контроллера Grails
Надеюсь, это будет легко ответить. Я создал класс в Grails под названием player, который имеет эту информацию:
class Player {
String steamId
String name
String portrait
static hasMany = {playerStatistics:PlayerStatistics}
static hasOne = {playerForumProfile:PlayerForumProfile}
}
Для пояснения, объект Player может иметь один объект PlayerForumProfile, но объект player всегда создается ДО объекта PlayerForumProfile. Моя проблема связана с доступом к объекту playerForumProfile, связанному со свойством hasOne в контроллере класса PlayerForumProfile. Я предполагал, что делать это:
def playerForumProfileInstance = new PlayerForumProfile()
def playerInstance = Player.get(params.id)
playerForumProfileInstance = playerInstance.playerForumProfile
приведет к вытягиванию объекта PlayerForumProfile, связанного с объектом playerInstance, в переменную playerForumProfileInstance, однако, когда я пытаюсь это сделать, Grails выдает ошибку, сообщающую, что такого свойства как playerForumProfile нет. Можно ли получить доступ к объекту свойств hasOne таким способом или мне нужно сделать что-то еще?
Редактировать: я также пытался изменить класс Player, чтобы он включал переменную playerForumProfile и редактировал PlayerForumProfile, чтобы он имел объявление ownTo, но это продолжало приводить к исключению нулевого указателя при запуске моего приложения.
Изменить: Немного больше информации, я создал новое приложение Grails с нуля и создал отношения так, как это выглядит в документации Grails, и они работали без проблем, поэтому я думаю, что может быть проще просто запустить новое приложение и скопировать файлы окончены.
2 ответа
Этот ответ больше не является правильным для Grails 2.X и выше, это было верно в 2009 году, когда первоначально ответили.
В GORM нет свойства hasOne, оно также принадлежит:
static belongsTo = [playerForumProfile: PlayerForumProfile]
или просто обычное типизированное определение имени атрибута, если не существует каскадных отношений, подразумеваемых отношением:
PlayerForumProfile playerForumProfile
Подробности смотрите в документации GORM один на один.
В GORM есть функция hasOne: http://grails.org/doc/latest/ref/Domain%20Classes/hasOne.html