У меня проблема с активной загрузкой через join fetch
отношение, помеченное как lazy
.
@ManyToOne(fetch=FetchType.LAZY)
@LazyToOne(LazyToOneOption.NO_PROXY)
@JoinColumn(name = "type_id")
private TypeEntity type;
Из-за проблем с производительностью мы в настоящее время перемещаем все свойства, которые с нетерпением загружаются в отложенную загрузку.(@OneToOne и @ManyToOne)
Я следил за статьей Vladmihalcea (https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/) и включил усовершенствование байт-кода, чтобы разрешить отложенную загрузку свойств @OneToOne.
Теперь это работает хорошо, и я получаюмоя сущность без дополнительных объединений, когда я выбираю ее, но когда я хочу с нетерпением извлечь некоторые отношения (через left join fetch entity.relation
), они не загружаются. Я могу загрузить их только путем доступа к получателю, который запускает новый запрос SQL для его извлечения.
Я ожидаю, что эти отношения присоединения будут добавлены в мою сущность для последующего доступа к ней даже вне транзакции и без расширения доступа к базе данных.
Я активировал ведение журнала гибернации, и сгенерированный запрос кажется хорошим (Я вижу объединение в таблице, которое я хочу получить с нетерпением, и эти поля включены в оператор выбора вместе с основным объектом).
Любая идея, почему left join fetch entity.relation
не загружает отношение при успешном извлеченииэто? Вне транзакции он выбрасывает Unable to perform requested lazy initialization
Мы используем SpringBoot 1.5.1 с Hibernели 5.0.11.
Спасибо!