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