Как заставить конкретный запрос к ленивой загрузке атрибута, который обычно имеет загруженную загрузку? EntityGraphType.FETCH не работает.Принудительная загрузка обычно желающих атрибутов
@NamedEntityGraph(name="negGraphName",attributeNodes={
@NamedAttributeNode("name"),
@NamedAttributeNode("grup")})
class User{
private String name;
@ManyToOne
private UserGroup grup;
@ManyToMany(fetch=FetchType.EAGER)
protected Set<Authority> authoritiesList;
}
interface UserRepository extends CrudRepository<String, User>{
@EntityGraph(value="negGraphName", type=EntityGraphType.FETCH)
@Query("<custom query here>")
private Collection<User> getUsersInSpecialQuery(@Param("paramName") String paramName);
}
в основном, когда я называю userRepository.getUsersInSpecialQuery()
первоначальный запрос присоединяется к объекту, а не присоединиться к власти, однако затем Hibernate в любом случае инициализирует список власти с ОТДЕЛЬНЫМ SQL QUERY PER USER РЕЗУЛЬТАТА, который является крайне неэффективным. Кроме того, он инициализирует родительский граф объекта ObjectObject, который даже не помечен как Eager.
Отключить fetch=FetchType.EAGER
on authorityList отключил дополнительные запросы для каждого пользователя, но я все еще хочу, чтобы он с нетерпением ждал всех других запросов.
EntityGraphType.Fetch
«s Javadoc говорит:
Когда свойство javax.persistence.fetchgraph используется для указания сущности графа, атрибуты, которые задаются с помощью атрибутов узлов объекта графа рассматриваются как FetchType. EAGER и атрибуты, которые не указано, рассматриваются как FetchType.LAZY
однако ясно, что это не так для меня
Hibernate : Force lazy-loadding on eager field < - не есть решение
Fetch Type LAZY still causes Eager loading Hibernate Spring data < - утверждает, что проблема заключается в том, что ленивый атрибут был загружен при просмотре, но в моем случае, я прошел через в спящем режиме, и это было при материализации объекта пользователя
насчет 'EntityGraphType.Fetch'. разве это не означает, что он будет просто загружать упомянутые атрибуты, а остальные будут ленивы? –