JPA / Hibernate удаляет «дочерние» объекты
У меня есть два класса сущностейA а такжеB которые существуют в двунаправленном отношении «один ко многим» соответственно.
A.java:
@OneToMany(cascade = CascadeType.ALL, mappedBy = "aId",
fetch=FetchType.EAGER, orphanRemoval=true)
private Set<B> bCollection = new LinkedHashSet<B>();
B.java
@JoinColumn(name = "A_ID", referencedColumnName = "ID", nullable=false)
@ManyToOne(optional = false)
private A aId;
В простом консольном приложении я получаюA строка из базы данных и попытаться удалить одну из ее деталейB строки (наугад) ноJPA / Hibernate не только удалить строку - он даже не выдаетУДАЛЯТЬ заявления к базе данных. Единственный способ удалитьB строка путем удаления соответствующей сущности из коллекции (LinkedHashSet) изA.java, Итак, пока у меня есть обходной путь, я хотел бы понять, почему приведенный ниже код дает сбой, и тоже происходит тихо!
public static void main(String[] args) {
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("testjpa");
EntityManager em = entityManagerFactory.createEntityManager();
EntityTransaction entityTransaction = em.getTransaction();
entityTransaction.begin();
A a = em.find(A.class, 1);
B b = getARandomChildOfA(a);
em.remove(em.merge(b)); // simple em.remove(b) doesn't work either
entityTransaction.commit();
em.close();
entityManagerFactory.close();
}