Обратное каскадное удаление Grails без hasMany или относится к - PullRequest
2 голосов
/ 11 мая 2011

У меня есть два класса домена.

class UsersAddThese {
  String someData
}

и

class TheseAreConstantlyGenerated {
  UsersAddThese theProblem
}

Есть ли способ удалить UsersAddThese и автоматически удалить все TheseAreConstantlyGenerated, или я долженпросто добавьте логику к findAllByTheProblem, а затем повторите и удалите.(Я бы предпочел, чтобы это можно было сделать автоматически, чтобы я мог добавить новые сгенерированные классы, которые ссылаются на UsersAddThese, а не менять контроллер удаления.)

В качестве альтернативы, есть какой-то способ просто сказать GORM:что-то еще зависит от того, что я удаляю, чтобы вызвать ERROR util.JDBCExceptionReporter - Cannot delete or update a parent row: a foreign key constraint fails, удалить это тоже - рекурсивно. "

1 Ответ

5 голосов
/ 11 мая 2011

Ну, похоже, весь смысл ссылочной целостности в том, чтобы НЕ делать то, что вы пытаетесь сделать во 2-й части вашего вопроса.Однако вы можете добавить это замыкание в свой класс домена UsersAddThese:

def beforeDelete () {
    TheseAreConstantlyGenerated.withNewSession {
      TheseAreConstantlyGenerated.findAllByTheProblem(this).each {TheseAreConstantlyGenerated thing ->
        thing.delete()
      }
    }
}

Это должно сработать.

...