9

hibernate.hbm2ddl.autoHibernateがmysqlにテーブルを作成するように作成するセットがあります。

Cascadeただし、休止状態がテーブル内の参照を正しく追加しているようには見えません。ただし、たとえば行を削除する場合は機能し、休止状態のアノテーションとして削除カスケードがあります。つまり、Hibernateは実行時にアナウンスを読み取り、カスケードを手動で実行するということですか?

それは正常な動作ですか?

例えば:

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

ここでは、カスケードをALLに設定しました。ただし、実行中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

4

1 に答える 1

6

および定義はDDLに変換されCascadeType、操作が実行されたときの動作方法をHibernateに指示します。@Cascade

ただし、@OnDelete親で使用して、適切なondeleteカスケード句で作成された外部キーを取得できる場合があります。

于 2010-05-18T14:29:16.953 に答える