Tôi có một tập hợp hibernate.hbm2ddl.auto
để tạo ra để Hibernate tạo các bảng trong mysql cho tôi.Hibernate không tạo ra cascade
Tuy nhiên, có vẻ như hibernate không chính xác thêm Cascade
vào các tham chiếu trong bảng. Tuy nhiên nó làm việc khi tôi ví dụ xóa một hàng, và tôi có một thác xóa như chú thích ngủ đông. Vì vậy, tôi đoán rằng có nghĩa là Hibernate lần đọc các annoation trên thời gian chạy, và thực hiện cascading bằng tay?
Hành vi đó có bình thường không?
Ví dụ:
@Entity
class Report {
@OneToOne(cascade = CascadeType.ALL)
public File getPdf() {
return pdf;
}
}
Ở đây tôi đã thiết thác cho TẤT CẢ. Tuy nhiên, khi chạy 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 |
Nó không nói bất cứ điều gì về tầng thứ khác rồi khóa ngoài. Theo tôi, nó cần phải có thêm các ON DELETE CASCADE ON DELETE UPDATE