Java 我得到了';org.hibernate.ObjectDeletedException:已删除的实例传递给merge';使用2个不同的事务

Java 我得到了';org.hibernate.ObjectDeletedException:已删除的实例传递给merge';使用2个不同的事务,java,hibernate,spring-boot,spring-data-jpa,Java,Hibernate,Spring Boot,Spring Data Jpa,我在服务类中的两个不同方法和事务中使用SpringDataJPA存储库方法deleteAll()和saveAll(List)。在deleteAll()调用之后,调用saveAll(List)方法来重新填充表,但我一直得到一个org.hibernate.ObjectDeletedException:deleted实例传递到merge错误 @Service ServiceClass { @Autowired MyRepository repository; public void t

我在服务类中的两个不同方法和事务中使用SpringDataJPA存储库方法deleteAll()和saveAll(List)。在deleteAll()调用之后,调用saveAll(List)方法来重新填充表,但我一直得到一个org.hibernate.ObjectDeletedException:deleted实例传递到merge错误

@Service
ServiceClass
{

   @Autowired MyRepository repository;

   public void test()
   {
       List<myEntity> entities = new ArrayList<>();
       //code to populate list

       clearTable();
       populateTable(entities);
   }

   @Modifying
   @Transactional
   private void clearTable()
   {
       repository.deleteAll();
   }

   @Modifying
   @Transactional
   private void populateTable(List<myEntity> entities)
   {
       repository.saveAll(entities);
   }

}

//Repository class
public interface MyRepository extends CrudRepository<myEntity, Long>
{
}
@服务
服务类
{
@自动连线MyRepository存储库;
公开无效测试()
{
列表实体=新的ArrayList();
//用于填充列表的代码
clearTable();
可推广(实体);
}
@修改
@交易的
私有void clearTable()
{
repository.deleteAll();
}
@修改
@交易的
私有void populateTable(列出实体)
{
repository.saveAll(实体);
}
}
//存储库类
公共接口MyRepository扩展了Crudepository
{
}

CrudRepository中delete的内部实现如下

@Transactional
    public void delete(T entity) {

        Assert.notNull(entity, "The entity must not be null!");
        em.remove(em.contains(entity) ? entity : em.merge(entity));
    }
删除实体之前,此实体必须处于管理状态。我们可以使用一些函数merge、find等。注意:EntityManager关闭后,其所有实体都将分离


因此,在删除后进行提交

CRUDEPository中delete的内部实现如下

@Transactional
    public void delete(T entity) {

        Assert.notNull(entity, "The entity must not be null!");
        em.remove(em.contains(entity) ? entity : em.merge(entity));
    }
删除实体之前,此实体必须处于管理状态。我们可以使用一些函数merge、find等。注意:EntityManager关闭后,其所有实体都将分离

因此,在删除后进行提交