Java 对于具有FK约束的elementcollection,JpaRepository deleteall()失败

Java 对于具有FK约束的elementcollection,JpaRepository deleteall()失败,java,hibernate,spring-data,spring-data-jpa,cascading-deletes,Java,Hibernate,Spring Data,Spring Data Jpa,Cascading Deletes,我正在为我的ORM使用JpaRepository @Entity @DiscriminatorValue(value = "L") @Table(name = "LARGEPROJECT") public class LargeProject extends Project { LargeProject() { // jpa only } public String description; @ElementCollection public Map<String, String&g

我正在为我的ORM使用JpaRepository

@Entity
@DiscriminatorValue(value = "L")
@Table(name = "LARGEPROJECT")
public class LargeProject extends Project {

LargeProject() { // jpa only
}

public String description;

@ElementCollection
public Map<String, String> params = new HashMap<>();

@ElementCollection
public Map<String, String> anotherSet = new HashMap<>();

}
我得到一个例外的形式:

org.springframework.dao.DataIntegrityViolationException:无法执行语句;SQL[n/a];约束[FK_K8XLJ5LKC9IK2E39EK06MWUM7:PUBLIC.LARGE_项目参数外键LARGE_项目ID引用PUBLIC.LARGEPROJECTPROJECT ID 1;SQL语句: 从大型项目中删除,其中项目id位于从HT_大型项目中选择项目id[23503-176]

我做了一些研究,发现如下:


我想知道JPA是否不支持@ElementCollection的这些帖子中所述的基于API的删除?如果不是,那么最好的方法是什么?

我发现批量删除deleteAllInBatch确实有效,并创建了形式为delete from largeproject的语句,其中在select project\u id from project中使用project\u id。这适用于预期的空元素集合,但如果elementcollection有记录,则这是不正确的语句,因为应首先删除每个元素集合,以免违反FK完整性约束
public interface LargeProjectRepository extends JpaRepository<LargeProject, Long> {
}