Использование hasOne и ownTo для контроля того, как GORM будет относиться к вашим отношениям.Согласно последней документации Grails по моделированию GORM справедливо следующее:
Класс User {Profile profile} приведет к соотношению многие-к-одному.Это означает, что любое количество Клиентов может указывать на данный профиль.За этим ни одно отношение не применяется.
Если профилю присвоено статическое отношение ownTo = [client: Client], то это отношение становится двунаправленным отношением «многие к одному», то есть у клиента есть один профиль, и этот профиль принадлежитконкретный клиент.GORM теперь будет управлять сохранением профиля (сохранять, обновлять и удалять) при сохранении, обновлении или удалении клиента.Это также позволяет запрашивать через GORM профиль и выставлять обратную ссылку на клиента.
hasOne используется для создания отношения один-к-одному.Вы должны применить это на стороне владельца (клиент в вашем примере).Это позволит GORM управлять постоянством профиля при сохранении, обновлении или удалении клиента.
Наконец, hasMany позволяет вам определять отношение один-ко-многим со стороны владельца (в вашем случае это клиент)где клиент может иметь много профилей (глупо, но я использую ваши примеры свойств).Опять же, это говорит GORM, что постоянство должно обрабатываться при сохранении, обновлении или удалении Клиента.В отношении этого типа отношений есть несколько ошибок, и я настоятельно рекомендую вам прочитать справочную документацию, чтобы узнать больше о том, как правильно использовать этот тип отношений.