Нашел забавную вещь в Hibernate
Допустим, у нас есть класс Parent, в котором есть list name="children" cascade="all,delete-orphan"; one-to-many class="Child".
И есть класс Child, соответственно.
Под этот list мы, естественно сделали сеттер Parent.setChildren(List childs) {this.children = childs;} Публичный!
Забавная вещь заключается в том, что мы не можем использовать этот сеттер в своём коде, никогда. Потому что если мы попросим parent.setChildren(myArrayList);, то при flush() мы получим
org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: Parent.children.
Так вот, мои претензии к Hibernate:
- Это произвольное ограничение, либо следующее из "а нам так было проще написать", либо пытающееся оградить меня от ошибки, которую я не совершал
- В документации (reference) оно не упомянуто. (покажите, что я неправ, найдите)
- Самое главное: Библиотека заставляет создать этот setter, но пользоваться им нельзя категорически. Сама логика системы ведет к ошибкам пользователей!
А то вы мне вопросы задаете, а теперь есть, чем ответить. Чего я не понимаю в данном случае?
И есть класс Child, соответственно.
Под этот list мы, естественно сделали сеттер Parent.setChildren(List childs) {this.children = childs;} Публичный!
Забавная вещь заключается в том, что мы не можем использовать этот сеттер в своём коде, никогда. Потому что если мы попросим parent.setChildren(myArrayList);, то при flush() мы получим
org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: Parent.children.
Так вот, мои претензии к Hibernate:
- Это произвольное ограничение, либо следующее из "а нам так было проще написать", либо пытающееся оградить меня от ошибки, которую я не совершал
- В документации (reference) оно не упомянуто. (покажите, что я неправ, найдите)
- Самое главное: Библиотека заставляет создать этот setter, но пользоваться им нельзя категорически. Сама логика системы ведет к ошибкам пользователей!
А то вы мне вопросы задаете, а теперь есть, чем ответить. Чего я не понимаю в данном случае?
