【发布时间】:2020-12-20 14:51:25
【问题描述】:
我有一个 Java spring boot 项目,我在这个项目中使用 Hibernate。我有一个void deleteAll(List<Long> idList) 方法,它的查询是@Query(value = "DELETE c FROM Course c WHERE c.id in :idList", nativeQuery = true)。我想在每次删除操作后使用触发器。我在mysql中创建了一个触发器,当我在mysql中尝试时它可以工作,但是当我调用void deleteAll(List<Long> idList)方法时它不起作用。如何将我的触发器与休眠一起使用?
我的触发器定义:
DELIMITER $$
CREATE TRIGGER after_delete_course AFTER DELETE ON course FOR EACH ROW
BEGIN
DELETE tc1 FROM table1_course tc1 WHERE tc1.course_id = OLD.id;
DELETE tc2 FROM table2_course tc2 WHERE tc2.course_id = OLD.id;
DELETE tc3 FROM table3_course tc3 WHERE tc3.course_id = OLD.id;
END$$
DELIMITER ;
调用deleteAll时hibernate生成的SQL:
Hibernate:
DELETE c
FROM
Course c
WHERE
c.id in (
?
)
【问题讨论】:
-
请出示您的触发器定义。
-
也许
deleteAll(List<Long> idList)没有提交事务?方法调用后course中的行是否被删除? -
该方法有效,但它只删除课程而不是 table1_course、table1_course 和 table1_course。 @fantaghirocco
-
调用deleteAll时显示hibernate生成的SQL
-
我编辑了问题@A.Alexander
标签: java mysql spring hibernate