У меня есть родитель и порожденное отношение:
Hibernate сохраняющегося лица неожиданного поведение
public class Parent{
private int id;
@OneToMany(cascade = CascadeType.ALL, mappedBy="parent", orphanRemoval=true)
private List<Child> childs = new ArrayList<>();
}
public class Child{
private int id;
@ManyToOne
private Parent parent;
}
И я создал функцию упорствовать родитель с его Детской:
public void persist(Parent obj) {
Session session = HibernateUtil.sessionFactory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
session.saveOrUpdate(obj);
tx.commit();
} catch (HibernateException e) {
if (tx != null)
tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
}
Поскольку лицами beign родительском сохранялось в одной транзакции, поэтому ожидаемое поведение Hibernate в том, что если что-то пойдет не так, вставляя дочерние элементы, родительский элемент тоже не будет вставлен, но у меня что-то другое!
Hibernate вставил родителя, и когда дети не были вставлены, откат не произошел! Поэтому я нашел себя с родителем только в базе данных!
Это нормально или я делаю что-то не так?!