У меня есть несколько основных доменных объектов Grails:
Задача
Пользователь
Недавно я хотел иметь возможность назначать задачи нескольким пользователям. Поэтому я добавил этот код в класс Task.groovy:
static hasMany = [users: User]
static mapping = {
users joinTable: [name: 'task_user', column: 'user_id', key: 'task_id']
}
Таким образом, Задача теперь может быть назначена нескольким пользователям, используя объединяющую таблицу - объединение Таблиц Задач и Пользователей. Теперь, когда я создаю новую задачу, она выдает мне сообщение об ошибке:
"свойство not-null ссылается на нулевое или временное значение: blah.User.address"
В сгенерированной таблице соединений "task_user" ему нужен только user_id из объекта User, поэтому я не понимаю, почему он жалуется на то, что другие пользовательские поля являются пустыми. Пользовательский объект всегда будет присутствовать в базе данных. Я не хочу полностью загружать каждого пользователя, чтобы создать новую задачу. Я почти уверен, что это как-то связано с каскадированием.
Мне нужно поведение, при котором, если задача удалена, соответствующая запись в таблице присоединения task_user должна быть удалена. Я "никогда" не хочу, чтобы пользовательский объект обновлялся / удалялся в результате сохранения задачи. Я не уверен, как поступить.