при выполнении запросов через Criteria API? Суть в следующем:
есть Entity, в которой @ManyToOne(fetch = FetchType.LAZY)
делаю запрос через критериа апи примерно такого плана:
cb.equal(root.get("id"), id)
при выполнении через метод findAll() репозитория в логах вижу, что вместе с запрашиваемой родительской сущностью, достается отдельным запросом еще и дочка, которая вроде как должна быть LAZY. если кто борол такую шляпу, буду признателен за подсказки.
Можешь попробовать FetchType.EAGER
тоже самое будет
у вас там случаем нигде эта дочерняя сущность не вызывается, может в toString для вывода в лог или ещё где
не, вывода в лог нет, да и дочерняя сущность, кроме как в поле родителя, нигде не фигурирует
С точки зрения JPA - Lazy это просто рекомендация рантайму, которой он может и пренебречь. Надо, наверное, в отладчике глянуть - как там Хибер такие решения принимает The LAZY strategy is a hint to the persistence provider runtime that data should be fetched lazily when it is first accessed. The implementation is permitted to eagerly fetch data for which the LAZY strategy hint has been specified. https://docs.oracle.com/javaee/7/api/javax/persistence/FetchType.html
это может происходить с @OneToOne полями я бы поставил на то что где-то неявно вызывается геттер этого ленивого поля например mapstruct'ом или modelmapper'ом или ту стрингом или equalsом
эхх, хибер меня добьет когда-нить своим неопределенным поведением. есть еще вопрос на SO почти трехлетней давности, там тоже так и не выдали работающее решение https://stackoverflow.com/questions/63315523/lazy-loading-not-working-with-specification
ну так мапстракты и прочее уже сильно после вызываются. да и при LAZY оно должно референсами дочерние сущности в полях заполнять по идее
прокси сразу, подтягивание при первом обращении помимо мапстракта как уже писали выше это ломбок может подкинуть через equals или tostring
особенно если стоит какая нить аннотация @Data
не, equals и hashCode переопределены руками и там всё чисто. ломбок ток для геттеров/сеттеров и конструктора
Обсуждают сегодня