JPA удалить отношения многие ко многим, не удаляя дочернюю сущность - PullRequest
0 голосов
/ 20 апреля 2020

Я хочу удалить сущность с дочерним ManyToMany отношением, не затрагивая дочернюю сущность, только удалив идентификатор в ссылочной таблице

public class Parent implements Serializable {
    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @NotNull
    @JoinTable(name = "parent_child",
               joinColumns = @JoinColumn(name = "parent_id", referencedColumnName = "id"),
               inverseJoinColumns = @JoinColumn(name = "child_id", referencedColumnName = "id"))
    private Set<Child> turns = new HashSet<>();
}

Я хочу сделать это, выполнив собственный запрос:

@Query(value = "delete from child where parentId = ?1 and id not in (?2)", nativeQuery = true)
void deleteAllUnnecessaryChildren(Long parentId, List<Long> childIds);

но я получаю ошибку:

Caused by: org.postgresql.util.PSQLException: 
ERROR: update or delete on table "parent" violates foreign key constraint "fk_parent_child_parent_id" on table "parent_child" 
Detail: Key (id)=(3852) is still referenced from table "parent_child".
...