У меня есть entityrelation вроде этого:JPA удалить все entites работает странно
В классе ParentObj:
@OneToMany(mappedBy = "parentObj", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
private List<ChildObj> list;
В классе ChildObj:
@JoinColumn(name="PARENT_OBJ")
@ManyToOne
private ParentObj parentObj;
Когда родительский объект сохраняется или удаляется, ребенок также сохраняется и удаляется. НО при попытке удалить все объекты с CriteriaDelete как:
CriteriaDelete<ParentObj> query = builder.createCriteriaDelete(ParentObj.class);
query.from(ParentObj.class);
em.createQuery(query).executeUpdate();
или простой запрос, как это:
em.createQuery("DELETE FROM ParentObj po").executeUpdate();
я получил ConstraintViolationException, может кто-нибудь объяснить, почему это происходит?
Я использую org.hibernate.ejb. HibernatePersistence поставщик с JTA Wildfly сервер.
Спасибо за объяснение, есть ли способ удалить все объекты из таблицы элегантным способом? (В настоящее время я просто выбираю все из них и удаляю их в foreach.) – gaRos
Применение каскадного удаления в базе данных - единственный вариант, о котором я знаю. –