java - 不传参数删除db中包含父子关系的多个表的所有数据【Spring boot】
问题描述
我想知道有没有一种方法可以在不传递参数的情况下删除多个父/子表的所有数据?因为这些表的shared Id的行数很多,所以总是用void deleteAllByUserId(Long userId)
. 如果我每次都将 id 传递给方法,我需要做很多次。但很明显,我不能简单地void deleteAll()
在多个上做,因为由于父/子关系,它会出现错误。所以我想知道有没有办法在一个方法中做到这一点?
例如,如果我有三个表,分别是表 A、表 B 和表 C。它们都共享 User_Id 的键。
- 我没有编辑我的存储库,因为 deleteAll() 已经写好了。
服务实施
@Autowired private ARepository aRepository; @Autowired private BRepository bRepository; @Autowired private CRepository cRepository; public void deleteAllDataThreeTable() { aRepository.deleteAll(); bRepository.deleteAll(); cRepository.deleteAll(); }
我不知道如何通过传递参数逐个删除 id,因为行数很多,我不认为传递每个 id 是一个好方法。任何想法都是一个很大的帮助。谢谢!!
解决方案
假设您希望在删除用户时删除所有子项,您应该使用ON DELETE CASCADE
数据库服务器的功能。这个页面提供了一个在 MySQL 中执行此操作的好示例。
推荐阅读
- ide - 如何在打开大括号样式后使用 COMPACTED Allman 同一行的 PhpStorm 设置
- css - 透明图像具有白色背景
- python - 第 10 行出现 TokenError .. 但只有 9 行代码
- visual-studio-code - VSCode 不建议或自动完成任何导入
- python - 第二个图例框没有正确的符号/标记
- sql - 带案例选择
- r - 如何计算R中变量的每小时平均值
- selenium - 无法在 MS Edge 中选择下拉菜单;收到 ElementNotInteractableException 错误消息
- javascript - 从Javascript数组中删除带有字符的字符串
- javascript - 真的不支持 React Hooks 的异步 setState 吗?