删除数据库中包含父子关系的多个表的所有数据,而不传递参数 [Spring boot]



我想知道有没有办法在不传递参数的情况下删除父/子表的多个表的所有数据?因为这些表的共享 ID 的行很多,所以总是通过void deleteAllByUserId(Long userId)来做是不方便的。如果我每次都向该方法传递 id,我将需要多次这样做。但很明显,我不能简单地对多个 cuz 进行void deleteAll(),由于父子关系,它会出错。所以我想知道有没有办法在命中的方法中做到这一点?

例如,如果我有三个表,分别是表 A、表 B 和表 C。他们都共享User_Id的钥匙。

  1. 我没有编辑我的存储库,因为 deleteAll(( 已经写好了。
  2. 服务实施

    @Autowired
    private ARepository aRepository;
    @Autowired
    private BRepository bRepository;
    @Autowired
    private CRepository cRepository;
    
    public void deleteAllDataThreeTable() {
    aRepository.deleteAll();
    bRepository.deleteAll();
    cRepository.deleteAll();
    }
    

我不知道如何通过传递参数按id删除id,因为有很多行,我不认为传递每个id是一个好方法。任何想法都是一个很大的帮助。谢谢!!

假设您希望在删除用户时删除所有子项,则应使用数据库服务器的ON DELETE CASCADE功能。这个页面提供了一个在MySQL中执行此操作的很好的例子。

最新更新