2016-09-19 11 views
0

Если вы хотите использовать внешний ключ с ON DELETE CASCADE, вы можете сделать это в спящем режиме, используя аннотацию @OnDelete. Он заставляет спящий режим генерировать DDL для таблицы с соответствующим внешним ключом.Ограничение набора спящего режима «ON UPDATE CASCADE»

То, что я сейчас ищу, - это возможность задать спящий режим для создания ограничения с помощью ПО ОБНОВЛЕНИЮ КАСКАДА. К сожалению, в hibernate нет аннотации @OnUpdate. Как я могу спящий режим генерировать DDL для таблицы с ограничением для внешнего ключа ON UPDATE CASCADE?

+0

Как правило, не рекомендуется обновлять первичные ключи. – joop

ответ

0

Можете ли вы использовать аннотацию @Cascade?

@Cascade(CascadeType.SAVED_UPDATE) 
+0

Каскадная аннотация, к сожалению, не влияет, когда спящий режим генерирует CREATE TABLE DDL. – rsvidler

0

При использовании спящего режима родной API, то вы должны использовать аннотацию спящего режима для каскада и это:

> @Cascade (CascadeType.SAVED_UPDATE)

тогда вы звоните save(), но с вашей аннотацией, вы должны вызвать метод persist() JPA . Для получения более подробной информации, пожалуйста, проверьте документацию в спящем режиме.

http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-hibspec-cascade

Ниже приведены некоторые каскадные операции, которые могут быть полезны.

CascadeType.PERSIST: означает, что сохранить() или сохраняются() операции каскадные связанным лицам.

CascadeType.MERGE: означает, что связанные объекты объединены в управляемое состояние, когда владеющий объект равен .

CascadeType.REFRESH: делает то же самое для обновления() .

CascadeType.REMOVE: удаляет все связанные сущности связь с этим параметром при удалении объекта-владельца.

CascadeType.DETACH: отсоединяет все связанные объекты, если происходит «отсоединение« ».

CascadeType.ALL: является сокращением для всех вышеперечисленных каскадных операций.

+0

К сожалению, это мне не помогает. Я хочу, чтобы получить правильный DDL, когда hibernate создает таблицу. Ограничение внешнего ключа должно выглядеть так: ПО ОБНОВЛЕНИЮ КАСКАДА НА УДАЛИТЬ КАСКАД. Это не тот случай, когда я использую рекомендованное вами решение. Я хочу использовать инструменты базы данных (pgAdmin) для изменения строк, поэтому мне нужно решение, в котором hibernate создает таблицу с правильными ограничениями для внешних ключей. – rsvidler