Будьте в спящем режиме не генерирует каскад

У меня есть набор hibernate.hbm2ddl.auto создать так, чтобы Были в спящем режиме, составляет таблицы в mysql для меня.

Однако не кажется, что в спящем режиме, правильно добавляет Cascade на ссылках в таблице. Это действительно однако работает, когда я, например, удаляю строку, и у меня есть удалить каскад, как в спящем режиме аннотация. Таким образом, я предполагаю, что означает, что В спящем режиме, читает annoation на времени выполнения, и выполните расположение каскадом вручную?

То нормальное поведение?

Например:

@Entity
class Report {
    @OneToOne(cascade = CascadeType.ALL)
    public File getPdf() {
    return pdf;
}
}

Здесь я установил каскад на ВСЕ. Однако при выполнении show create table Report

Report | CREATE TABLE `Report` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `pdf_id` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `FK91B14154FDE6543A` (`pdf_id`),
  CONSTRAINT `FK91B14154FDE6543A` FOREIGN KEY (`pdf_id`) REFERENCES `File` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

Это ничего не говорит о расположении каскадом другого затем внешний ключ. По-моему, это должно было добавить ON DELETE CASCADE ON DELETE UPDATE

8
задан Pascal Thivent 18 May 2010 в 14:29
поделиться

1 ответ

Определения CascadeType и @Cascade не переведены в DDL, они сообщают Hibernate, как вести себя при выполнении операции. выполненный.

Однако существует @OnDelete , который можно использовать для родительского элемента, чтобы получить внешний ключ, созданный с помощью соответствующего предложения каскада при удалении.

6
ответ дан 5 December 2019 в 22:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: