MyObject myObject = repositoryHibernateImpl.getMyObjectFromDatabase();
//transaction is finished, and no, there is not an option to reopen it
ThirdPartyUtility.doStuffWithMyObjectType( myObject );
на данный момент вы уже определили, что загружено лениво и нетерпеливо, и сторонняя утилита попытается вызвать все методы вашего экземпляра "myObject", это нормально, потому что вы не хотите ничего возвращать для лениво загруженных свойств, к сожалению, он не возвращает ноль, он выдает LazyInitializationException
.
Это происходит потому, что вы на самом деле вызываете метод на прокси Hibernate вашего объекта, и он знает, что он не получил эти данные, и выдает исключение.
Можно ли даже получить базовый объект с нулевыми значениями, чтобы получатель просто возвращал ноль и не выбрасывал исключение? По сути, отсоединение объекта, чтобы Hibernate больше не осознавал его. Метод доступа к объекту, который загружается лениво, должен возвращать ноль, он не может возвращать фактические значения, мы хотим иметь возможность преобразовать сущность в POJO без необходимости создавать объект, который выглядит точно так же, как сущность и должен переназначить все значения.