Java 对于具有FK约束的elementcollection,JpaRepository deleteall()失败
我正在为我的ORM使用JpaRepositoryJava 对于具有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
@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> {
}