Hibernate cascade and mysql foreign key

本文介绍了一个名为'student'的表结构定义,该表包含id、teacher、name和sex等字段,并设置了外键约束及级联更新和删除。同时提到了Hibernate框架中级联操作的应用场景。
CREATE TABLE student (
    id          INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    teacher      INTEGER UNSIGNED NOT NULL,
    name         varchar(12) BINARY NOT NULL,
    sex    TINYINT NOT NULL DEFAULT 0,
    FOREIGN KEY fk_teacher (teacher) REFERENCES teacher(id)
        ON UPDATE CASCADE
        ON DELETE CASCADE

) engine=INNODB;

 

If we set  "ON UPDATE/DELETE CASCADE" on a foreign key, it is the same effect with configure hibernate CASCADE.

But if we set Hibernate cascade and foreign key cascade at the same time, then our project will use hibernate cascade first.

转载于:https://www.cnblogs.com/frankliiu-java/archive/2009/12/16/1625531.html

-- 用户表 CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, password VARCHAR(255) NOT NULL, name VARCHAR(100) NOT NULL, role ENUM('admin', 'purchaser', 'manager') NOT NULL ); -- 订单表 CREATE TABLE orders ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, order_date DATETIME NOT NULL, status ENUM('pending', 'processing', 'completed') DEFAULT 'pending', FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ); -- 产品表 CREATE TABLE products ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, description TEXT ); -- 组件表 CREATE TABLE components ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL ); -- 产品-组件关联表 (多对多) CREATE TABLE product_components ( product_id INT NOT NULL, component_id INT NOT NULL, quantity INT NOT NULL DEFAULT 1, PRIMARY KEY (product_id, component_id), FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE, FOREIGN KEY (component_id) REFERENCES components(id) ON DELETE CASCADE ); -- 板材材质表 CREATE TABLE board_materials ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL UNIQUE ); -- 木皮表 CREATE TABLE wood_veneers ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL UNIQUE ); -- 油漆表 CREATE TABLE paints ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL UNIQUE ); -- 板材表 CREATE TABLE boards ( id INT AUTO_INCREMENT PRIMARY KEY, material_id INT NOT NULL, top_veneer_id INT, bottom_veneer_id INT, paint_id INT, FOREIGN KEY (material_id) REFERENCES board_materials(id), FOREIGN KEY (top_veneer_id) REFERENCES wood_veneers(id), FOREIGN KEY (bottom_veneer_id) REFERENCES wood_veneers(id), FOREIGN KEY (paint_id) REFERENCES paints(id) ); -- 组件生产工艺表 (核心关联) CREATE TABLE component_production ( id INT AUTO_INCREMENT PRIMARY KEY, component_id INT NOT NULL, board_id INT NOT NULL, components_per_board INT NOT NULL, FOREIGN KEY (component_id) REFERENCES components(id) ON DELETE CASCADE, FOREIGN KEY (board_id) REFERENCES boards(id) ON DELETE CASCADE ); -- 采购类型表 CREATE TABLE purchase_types ( id INT AUTO_INCREMENT PRIMARY KEY, type ENUM('board', 'order_product', 'order_component') NOT NULL ); -- 采购记录表 CREATE TABLE purchases ( id INT AUTO_INCREMENT PRIMARY KEY, purchase_type_id INT NOT NULL, order_id INT, product_id INT, component_id INT, board_id INT NOT NULL, quantity INT NOT NULL, purchase_date DATETIME NOT NULL, user_id INT NOT NULL, FOREIGN KEY (purchase_type_id) REFERENCES purchase_types(id), FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE SET NULL, FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE SET NULL, FOREIGN KEY (component_id) REFERENCES components(id) ON DELETE SET NULL, FOREIGN KEY (board_id) REFERENCES boards(id) ON DELETE CASCADE, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ); -- 库存记录表 CREATE TABLE inventory ( id INT AUTO_INCREMENT PRIMARY KEY, board_id INT NOT NULL, quantity INT NOT NULL DEFAULT 0, last_updated DATETIME NOT NULL, FOREIGN KEY (board_id) REFERENCES boards(id) ON DELETE CASCADE ); -- 库存流水表 CREATE TABLE inventory_transactions ( id INT AUTO_INCREMENT PRIMARY KEY, inventory_id INT NOT NULL, purchase_id INT, order_id INT, change_type ENUM('in', 'out') NOT NULL, quantity INT NOT NULL, transaction_date DATETIME NOT NULL, FOREIGN KEY (inventory_id) REFERENCES inventory(id) ON DELETE CASCADE, FOREIGN KEY (purchase_id) REFERENCES purchases(id) ON DELETE SET NULL, FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE SET NULL ); 根据表格实现springboot实体类
06-23
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值