Java 将Spring Boot从2.1.5升级到2.1.6时出现问题,似乎没有正确/按正确顺序删除数据

Java 将Spring Boot从2.1.5升级到2.1.6时出现问题,似乎没有正确/按正确顺序删除数据,java,spring,hibernate,spring-boot,jpa,Java,Spring,Hibernate,Spring Boot,Jpa,我正在尝试将Spring Boot从2.1.5升级到2.1.6(重点是升级到2.2x,但这就是我发现问题的地方) 在我们的一个测试中尝试删除subjectType类型的实体时,我遇到以下异常: Detail: Key (id)=(5cd21b13-5dea-4384-9589-3a4d1ab4dfea) is still referenced from table "metric". 这看起来很清楚,对吗?我正在尝试删除仍有引用的内容 然而,代码总是用来工作的。就这么简单: List<

我正在尝试将Spring Boot从2.1.5升级到2.1.6(重点是升级到2.2x,但这就是我发现问题的地方)

在我们的一个测试中尝试删除subjectType类型的实体时,我遇到以下异常:

  Detail: Key (id)=(5cd21b13-5dea-4384-9589-3a4d1ab4dfea) is still referenced from table "metric".
这看起来很清楚,对吗?我正在尝试删除仍有引用的内容

然而,代码总是用来工作的。就这么简单:

List<Metric> metrics = metricRepo.findBySubjectTypeId(id);
metricRepo.deleteAll(metrics);
subjectTypeRepo.delete(subjectType);
entityManager.flush();
... //some code that removes data from other systems now that this part succeeded
我们不使用级联删除,因为其他系统中的数据需要删除。但是,在实际删除subjectType本身之前手动删除引用subjectType的对象在简单的非并发情况下应该可以工作


我试图查看2.1.5和2.1.6之间的依赖关系的变化,但没有找到任何明显的候选项,Hibernate除了验证程序之外似乎没有得到升级。所以我真的不知道这里突然发生了什么变化,是什么导致了这个问题。该问题仍然存在于(当前最新的)2.2.1版本中。

嘿,伙计,你解决了这个问题吗?我们正在从2.1.5升级到2.1.6,dekete()方法都是broken@Brunaldo我们只是决定使用entityManager本身来删除内容,而不是使用repository delete/deleteAll方法。这里发生了太多的汽车事故。
@Entity
public class Metric {

    @JoinColumn(name = "subject_type_id", nullable = false, foreignKey = @ForeignKey(name = "fk_subject_type"))
    @ManyToOne
    private SubjectType subjectType;
}