Grails: коллекция в доменном объекте без hasMany - PullRequest
0 голосов
/ 09 октября 2011

У меня есть два объекта домена A и B.

A может быть связан со многими B, но я не хочу никакого каскада сохранения от A до B.

Я думаю об определении отношения hasMany формы A к B, но затем о настройке каскадного поведения. Есть идеи?

Это пример объектов моего домена:

класс А {

static hasMany = [пчелы: B] }

класс B { }

Ответы [ 4 ]

1 голос
/ 06 января 2012

Почему бы не использовать 'ownTo' на B и ничего не объявлять на A?Таким образом, вы получите внешний ключ для «A», но операции с «A» не будут влиять на «B».Вы теряете немного удобства, но все еще можете легко найти все «B» на «A».Я на самом деле предпочитаю это, потому что мне не нужно беспокоиться о ленивой загрузке ошибок и переходе в спящий режим и загрузке всех букв B, когда я просто пытаюсь добавить один (при условии, что вам не нужна эта функциональность).*

1 голос
/ 10 октября 2011

Если вы не хотите, чтобы GORM управлял сохранением / обновлениями для вашей коллекции, просто не используйте hasMany. Вместо этого рассматривайте его как простое свойство HashSet.

0 голосов
/ 10 октября 2011

Если вы говорите, что я думаю, что вы говорите, то то, о чем вы говорите, не является каскадным.Простая схема ваших занятий будет полезна.Если у вас есть экземпляр A, который связан со многими экземплярами B, то все экземпляры B, которые ссылаются на рассматриваемый экземпляр A, ссылаются на точно такой же объект .У меня была такая же проблема, и я задал похожий вопрос здесь .В основном ваши варианты:

1.) Клонируйте экземпляр A всякий раз, когда он изменяется или когда вы считаете нужным.

2.) Создайте новые поля в вашем классе B, которыеудерживайте значения A, которые вас интересуют.

Оба подхода имеют свои преимущества и недостатки, но для меня вариант 2 оказался лучшим выбором.

0 голосов
/ 09 октября 2011

Вы можете определить свое собственное каскадное поведение в блоке static mappings вашего класса Domain.

Смотрите здесь: http://grails.org/doc/latest/ref/Database%20Mapping/cascade.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...