CF9 ORM EntityDelete с внешним ключом - PullRequest
1 голос
/ 18 декабря 2011

Используя обычный пример для объектов ORM типа «один-ко-многим» «Artist» и «Art», у меня есть таблица «Art» со столбцом ArtistID, который помечен как внешний ключ «Artist» (он использует, удивление,первичный ключ таблицы Artist).Когда у меня появляется конкретный Artist (называемый thisArtist) и пытающийся выполнить EntityDelete (thisArtist), я получаю сообщение об ошибке:

Оператор DELETE конфликтует с ограничением REFERENCE "FK_Art_Artists".Конфликт произошел в базе данных «ArtistTracker», таблице «dbo.Art», столбце «ArtistID».

Я чувствую себя довольно уверенно, что я делаю что-то глупое, либо с моей настройкой отношений, либо, возможно, с моим синтаксисом.Кто-нибудь сталкивался с этим?Я не вижу пример того, как EntityDelete () для конкретного Исполнителя, если он имеет ограничения внешнего ключа для записей в таблице Art.

1 Ответ

2 голосов
/ 18 декабря 2011

Ваш Художник, скорее всего, будет иметь свойство "arts", верно? И это указывает на Art CFC, по-видимому. Ваша художественная собственность, вероятно, выглядит как свойство name = "arts" cfc = "Art" fieldtype = "one-to-many";

Чего не хватает, так это сказать ORM, как обращаться со случаем, когда вы удаляете Artist. В вашем случае вам нужно добавить атрибут "cascade" в свойство arts, например, так: property ... cascade = "all-delete-orphan";

Затем, когда вы удалите исполнителя, Hibernate также удалит все осиротевшие элементы Art, принадлежавшие этому исполнителю.

При создании отношений один-ко-многим почти всегда требуется указывать cascade = "one-to-many" и inverse = "true".

...