2013-05-14 4 views

ответ

1

Предлагаю вам посмотреть в GORM documentation. У вас есть несколько способов объявить свои отношения между классами, и в зависимости от них удаление будет каскадным или нет.

Эта проблема объясняется в "6.3.3 Understanding Cascading Updates and Deletes".

ли это один-к-одному, один-ко-многим или многие-ко-многим, определяющим belongsTo приведет обновлений каскадом из имущего класса в ее зависимой (другой стороне отношение), а для много-/один-к-одному и один-ко-многим отношениям удаляет также каскад.

Таким образом, вы должны рассмотреть вопрос об объявлении hasMany и belongsTo, чтобы включить каскадные удаления.

1
class User { 
    // Group details should not be referenced here 
} 
class Group { 
    String Name 
    String Description 
    GroupDetails gd 
} 

class GroupDetails { 
    User user 
    static belongsTo = [group:Group] 
} 

В этом случае, если Group будет ребенок GroupDetails тогда, когда вы удалите Group, ребенок организации (ий) также будут удалены.

Посмотрите на первый пример в Grails документы: http://grails.org/doc/2.2.x/ref/Domain%20Classes/belongsTo.html

Кроме того, как Серджио Михельс Есть другие способы, чтобы сделать его работу.

пример: https://github.com/aprudnikovas/testGrailsOneToOneCascade

+0

У меня есть добавить связь в мой домен: класс GroupDetails { пользователя Пользователь статический belongTo = [группа: группа] } , но когда я пытаюсь удалить, это получить EROR как это: Строка была обновлена ​​или удалена другой транзакцией (или неверное сопоставление неверно): – dope

+0

Извините, небольшая ошибка: только фиксированная принадлежность -> принадлежит –

+0

Протестировано в git repo: https://github.com/aprudnikovas/testGrailsOneToOneCascade –

Смежные вопросы