Hibernate не поддерживает каскадирование "удаление-сирота" отношений "один-к-одному" или "многие-к-одному". Недавно я обнаружил это, и это придало мне серьезную головную боль. У меня есть пара классов в моей модели, которые были спроектированы таким образом, что у ребенка нет реального значения для мира вне родителя. У меня только один DAO для родителя, а не отдельный DAO для дочернего класса.
Это работает:
parent.getChild().setProperty("something");
parentDao.save(parent);
Это ничего не делает:
parent.setChild(null);
parentDao.save(parent);
Это очень неудачно, потому что теперь я должен переосмыслить свой уровень DAO и несколько операций моего уровня обслуживания.
Кто-нибудь работал с этим ограничением элегантным способом? Я действительно хотел бы только заботиться о сохраняющихся родительских объектах. В этом конкретном случае нет причин иметь дело с настойчивостью детей, кроме того, чтобы сделать Hibernate счастливым и только в случае удаления детей.