Postgresql 在spring boot中一次提交多个表

Postgresql 在spring boot中一次提交多个表,postgresql,spring-boot,jpa,Postgresql,Spring Boot,Jpa,我有以下方法可以保存多个表。目前,两个表分别进行提交。这意味着当我调试时,我可以看到employeeDetails和companyDetails表的提交分别发生 public void saveDB() { employeeDetailsRepo.save(employee); companyDetailsRepo.save(companyDetails); } 我想做的是,提交应该只发生一次。e、 g调试时,我不希望先提交第一个表数据,然后提交下一个表。我想要的是,一旦控制从这

我有以下方法可以保存多个表。目前,两个表分别进行提交。这意味着当我调试时,我可以看到employeeDetails和companyDetails表的提交分别发生

public void saveDB()
{
   employeeDetailsRepo.save(employee);
   companyDetailsRepo.save(companyDetails);

}
我想做的是,提交应该只发生一次。e、 g调试时,我不希望先提交第一个表数据,然后提交下一个表。我想要的是,一旦控制从这个方法出来,我们应该同时使用保存在两个表中的数据。为此,我在saveDB方法注释上尝试了@transnational,在springBoot的主类上尝试了@EnableTransactionManagement,但它不起作用。下面也试过了,但不起作用

@Transactional(readOnly = false, rollbackFor = {
            Exception.class }, propagation = Propagation.REQUIRES_NEW, isolation = Isolation.READ_COMMITTED)

    public void saveDB()
    {
       employeeDetailsRepo.save(employee);
       companyDetailsRepo.save(companyDetails);
    
    }
也在配置标志中添加的属性下方

spring.datasource.hikari.auto-commit =false

只是想知道您试图通过“双重”提交避免的负面影响是什么?假设第一个表提交成功,在第二个表提交期间,如果出现任何问题,则表示第二个表提交不成功。在这种情况下,因为这是一个完整的事务,我希望两个表都成功或失败,我不希望只提交第一个表@Hermann steidal,但这就是普通ole
@Transactional
为您所做的。我想你可能想得太多了。除非整个事务成功,否则事务中包装的所有内容都不会刷新到数据库中。您可以尝试一个实验,在两次保存之间抛出一个RuntimeException,看看表1是否真的被写入。然后在第二次保存后移动该抛出并再次运行,查看是否有任何表被写入。检查时,请检查实际数据库中的更改。