Я работаю над проектом, целью которого является решение общих проблем JPA при отображении сущностей в DTO с использованием ModelMapper. Этот вопрос уже решен на проекте. Ссылка на проект: JPA Model Mapper
"Для производительности крайне важно объявить объекты как ленивую нагрузку, поэтому мы
не нужно извлекать все связанные объекты каждый раз, когда нам нужны данные.
Но эта техника приводит к некоторым проблемам. Наиболее распространенным является
LazyInitializationException, который иногда может быть довольно раздражающим.
Большую часть времени мы бы просто хотели нулевой объект для не загруженного
объект вместо объекта, который выдает исключение, если к нему обращаются ... "
Источник: JPA Model Mapper
Таким образом, в проекте мы имеем дело с LazyInitializationException, устанавливая значение null для всех не загруженных объектов. Приведенные ниже примеры показывают, как это работает.
Повторное сопоставление объекта с нулевым значением для всех не загруженных объектов:
TypedQuery<SystemEntity> query =
em.createQuery("select s from SystemEntity s where s.id = 1", SystemEntity.class);
SystemEntity system = query.getSingleResult();
return new JpaModelMapper(em).mapEntity(system, SystemEntity.class);
Повторное сопоставление объекта со значением DTO, равным null, для всех не загруженных объектов:
TypedQuery<SystemEntity> query =
em.createQuery("select s from SystemEntity s where s.id = 1", SystemEntity.class);
SystemEntity system = query.getSingleResult();
return new JpaModelMapper(em).mapEntity(system, SystemDTO.class);
Для получения дополнительной информации см. JPA Model Mapper