Желание извлечения не работаетJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Желание извлечения не работает

Сообщение Anonymous »

this: < /p>

Код: Выделить всё

    @Override
public List find(FindUserRequestDto userRequestDto, Pageable pageable) {
Specification specification = buildSpecification(userRequestDto);
List users = repository.findAll(specification, pageable);
List userDtos = users.stream()
.map(userMapper::toResponseDto)
.toList();
return userDtos;
}

private static Specification buildSpecification(FindUserRequestDto userRequestDto) {
return (root, query, criteriaBuilder) -> {
var nameBeginsWith = criteriaBuilder.like(root.get("name"), userRequestDto.getName() + "%");
var bornAfter = criteriaBuilder.greaterThan(root.get("dateOfBirth"), userRequestDto.getDateOfBirth());
var hasEmail = criteriaBuilder.equal(root.join("emailData", JoinType.LEFT).get("email"), userRequestDto.getEmail());
var hasPhone = criteriaBuilder.equal(root.join("phoneData", JoinType.LEFT).get("phone"), userRequestDto.getPhone());

List predicates = new ArrayList();
if (userRequestDto.getName() != null) predicates.add(nameBeginsWith);
if (userRequestDto.getDateOfBirth() != null) predicates.add(bornAfter);
if (userRequestDto.getEmail() != null) predicates.add(hasEmail);
if (userRequestDto.getPhone() != null) predicates.add(hasPhone);
return criteriaBuilder.and(predicates.toArray(new jakarta.persistence.criteria.Predicate[0]));
};
}
< /code>
генерирует эти три запроса: < /p>
Hibernate:
select
u1_0.id,
u1_0.date_of_birth,
u1_0.name
from
"user" u1_0
left join
email_data ed1_0
on u1_0.id=ed1_0.user_id
left join
phone_data pd1_0
on u1_0.id=pd1_0.user_id
where
u1_0.name like ? escape ''
offset
? rows
fetch
first ? rows only
2025-05-31T18:54:41.186+03:00 TRACE 34688 --- [nio-8080-exec-1] org.hibernate.orm.jdbc.bind              : binding parameter (1:VARCHAR) 
, даже если вы видите аннотации кэширования, это не вопрос кэширования (если кэширование как -то не связывается с объединениями). Если я выполняю его еще раз, последние два запроса не вызываются. Я предполагаю, что это означает кэширование. Тем не менее, это может присоединиться хотя бы что -то.  Например, вместо: < /p>
    select
u1_0.id,
u1_0.date_of_birth,
u1_0.name
< /code>
Это может выполнить этот выбор: < /p>
    select
u1_0.id,
u1_0.date_of_birth,
u1_0.name,
pd1_0.user_id,
pd1_0.phone
Это уменьшит количество запросов на один.

Код: Выделить всё

repository.findById(id)
), стремление избрать работает так же, как и ожидалось: одна из двух объектов @onetomany объединяется с пользователем , другой извлекается отдельно:

Код: Выделить всё

Hibernate:
select
u1_0.id,
u1_0.date_of_birth,
u1_0.name,
ed1_0.user_id,
ed1_0.email
from
"user" u1_0
left join
email_data ed1_0
on u1_0.id=ed1_0.user_id
where
u1_0.id=?
2025-05-31T19:34:03.497+03:00 TRACE 23780 --- [nio-8080-exec-5] org.hibernate.orm.jdbc.bind              : binding parameter (1:BIGINT) 

Подробнее здесь: [url]https://stackoverflow.com/questions/79646790/eager-fetching-doesnt-work-spring-data-specification[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Желание разместить полосу прокрутки в крайнем правом углу DIV
    Anonymous » » в форуме Html
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Желание разместить полосу прокрутки в крайнем правом углу DIV
    Anonymous » » в форуме CSS
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Рейтинг стержней - желание выбора по умолчанию не будет выбором
    Anonymous » » в форуме Html
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Желание оптимизировать приложение Python Playwright Proxy
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Желание оптимизировать приложение Python Playwright Proxy
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»