Спецификация InvalidDataAccessResourceUsageException после перехода с SpringBoot v2 на v3 ⇐ JAVA
-
Гость
Спецификация InvalidDataAccessResourceUsageException после перехода с SpringBoot v2 на v3
У меня есть репозиторий Spring Data Jpa, и я вызываю repo .findAll() со спецификацией, которая создается в следующем
публичная спецификация подготовитьForBankRegistry(Long BankId, Фильтр ProjectMortgageRequestBankRegistryFilter) { return где(basicSpecs.distinct(ProjectMortgageRequest.class)) .and(basicSpecs.joinedAttributeEquals( присоединиться (ProjectMortgageRequest_.bank), Bank_.id, идентификатор банка)) .and(getFiltersFromSearchString(filter.getSearchString())) .and(basicSpecs.attributeInRange(ProjectMortgageRequest_.modifiedAt, BasicSpecs.mapTimeRange(filter.getModifiedDates()))) .and(basicSpecs.attributeIn(ProjectMortgageRequest_.status, filter.getStatus())); } Когда я выполняю метод findAll со спецификацией, я получаю следующую ошибку:
org.springframework.dao.InvalidDataAccessResourceUsageException: исключение JDBC, выполняющее SQL [/* */ выберите отдельный p1_0.id,p1_0.bank_id,p1_0.bank_comment,p1_0.credit_amount,p1_0.credit_ period_years,p1_0. gov_program,p1_0.начальный_платеж,p1_0.maternal_capital,p1_0.modified_at,p1_0.month_income,p1_0.monthly_pay,p1_0.mortgage_rate,p1_0.mortgage_region_code,p3_0.id,p3_0.client_comment,p3_0.construction_ period,p3_0.contractor _комментарий,p3_0.created_at, p3_0.email,p3_0.final_cost,p3_0.final_cost_comment,p3_0.полное_имя,p3_0.interior_type,p3_0.mailed,p3_0.marketing_communication_accepted,p3_0.modified_at,p3_0.mortgage,p3_0.non_type_house,p3_0.person_id,p3_0.personal_ data_processing_accepted,p3_0. телефон,p3_0.project_id,p3_0.project_version_id,p3_0.realty_cost,p3_0.region_id,p3_0.scan_document_id,p3_0.status,s1_0.project_request_id,s1_0.id,s1_0.archived,s1_0.created_at,r1_0.id,r1_0.comment, p4_0.id,p4_0.main,p4_0.name,r1_0.project_request_status_history_id,s1_0.status,p1_0.reg_program,r2_0.id,r2_0.created_at,r2_0.data_processing_accepted,r2_0.email,r2_0.first_name,CONCAT(r2_0.last_name, ', r2_0.first_name,' ', r2_0.middle_name), r2_0.last_name, r2_0.middle_name, r2_0.modified_at, r2_0.non_type_house_news, r2_0.oferta_accepted, r2_0.phre_house_news. erta_accepted, r2_0.username ,p1_0.статус,СЛУЧАЙ КОГДА p1_0.status = 'НОВЫЙ' ТОГДА 1 КОГДА p1_0.status = 'В РАБОТЕ' ТОГДА 2 КОГДА p1_0.status = 'ПОДТВЕРЖДЕНО', ТОГДА 3 КОГДА p1_0.status = «ОТКЛОНЕНО», ТОГДА 4 END from project_mortgage_requests p1_0 осталось присоединиться к project_requests p2_0 на p2_0.id=p1_0.project_request_id присоединиться к project_requests p3_0 на p3_0.id=p1_0.project_request_id осталось присоединиться к project_request_status_history s1_0 на p3_0.id=s1_0.project_request_id осталось присоединиться к project_request_ ignore_details r1_0 на s1_0.id=r1_0. project_request_status_history_id оставил присоединиться к d_project_request_reject_reasons p4_0 на p4_0.id=r1_0.reason_id оставил присоединиться к пользователям r2_0 на r2_0.id=p1_0.responsible_user_id где p1_0.bank_id=? порядок по p2_0.full_name по возрастанию, s1_0.id обнуляет последнее смещение? строки извлекаются первыми? только строки]; SQL [нет данных] Недавно мы перешли с SpringBoot 2 на версию 3, после этого кода код начал выдавать ошибку. До этого все работало нормально.
Проблема в этом отдельном вызове. Если я удалю его из метода спецификации, все будет хорошо.
basicSpecs.distinct() находится ниже:
@Override public Спецификация Different(Class rootClass) { возврат (корень, запрос, критерииBuilder) -> { query.distinct(истина); вернуть ноль; }; } Полная трассировка стека здесь: https://controlc.com/8b143ce7
Я ожидаю, что этот код будет работать так же хорошо, как и раньше. Я пытался переписать метод спецификации Different(), но не смог решить эту проблему.
У меня есть репозиторий Spring Data Jpa, и я вызываю repo .findAll() со спецификацией, которая создается в следующем
публичная спецификация подготовитьForBankRegistry(Long BankId, Фильтр ProjectMortgageRequestBankRegistryFilter) { return где(basicSpecs.distinct(ProjectMortgageRequest.class)) .and(basicSpecs.joinedAttributeEquals( присоединиться (ProjectMortgageRequest_.bank), Bank_.id, идентификатор банка)) .and(getFiltersFromSearchString(filter.getSearchString())) .and(basicSpecs.attributeInRange(ProjectMortgageRequest_.modifiedAt, BasicSpecs.mapTimeRange(filter.getModifiedDates()))) .and(basicSpecs.attributeIn(ProjectMortgageRequest_.status, filter.getStatus())); } Когда я выполняю метод findAll со спецификацией, я получаю следующую ошибку:
org.springframework.dao.InvalidDataAccessResourceUsageException: исключение JDBC, выполняющее SQL [/* */ выберите отдельный p1_0.id,p1_0.bank_id,p1_0.bank_comment,p1_0.credit_amount,p1_0.credit_ period_years,p1_0. gov_program,p1_0.начальный_платеж,p1_0.maternal_capital,p1_0.modified_at,p1_0.month_income,p1_0.monthly_pay,p1_0.mortgage_rate,p1_0.mortgage_region_code,p3_0.id,p3_0.client_comment,p3_0.construction_ period,p3_0.contractor _комментарий,p3_0.created_at, p3_0.email,p3_0.final_cost,p3_0.final_cost_comment,p3_0.полное_имя,p3_0.interior_type,p3_0.mailed,p3_0.marketing_communication_accepted,p3_0.modified_at,p3_0.mortgage,p3_0.non_type_house,p3_0.person_id,p3_0.personal_ data_processing_accepted,p3_0. телефон,p3_0.project_id,p3_0.project_version_id,p3_0.realty_cost,p3_0.region_id,p3_0.scan_document_id,p3_0.status,s1_0.project_request_id,s1_0.id,s1_0.archived,s1_0.created_at,r1_0.id,r1_0.comment, p4_0.id,p4_0.main,p4_0.name,r1_0.project_request_status_history_id,s1_0.status,p1_0.reg_program,r2_0.id,r2_0.created_at,r2_0.data_processing_accepted,r2_0.email,r2_0.first_name,CONCAT(r2_0.last_name, ', r2_0.first_name,' ', r2_0.middle_name), r2_0.last_name, r2_0.middle_name, r2_0.modified_at, r2_0.non_type_house_news, r2_0.oferta_accepted, r2_0.phre_house_news. erta_accepted, r2_0.username ,p1_0.статус,СЛУЧАЙ КОГДА p1_0.status = 'НОВЫЙ' ТОГДА 1 КОГДА p1_0.status = 'В РАБОТЕ' ТОГДА 2 КОГДА p1_0.status = 'ПОДТВЕРЖДЕНО', ТОГДА 3 КОГДА p1_0.status = «ОТКЛОНЕНО», ТОГДА 4 END from project_mortgage_requests p1_0 осталось присоединиться к project_requests p2_0 на p2_0.id=p1_0.project_request_id присоединиться к project_requests p3_0 на p3_0.id=p1_0.project_request_id осталось присоединиться к project_request_status_history s1_0 на p3_0.id=s1_0.project_request_id осталось присоединиться к project_request_ ignore_details r1_0 на s1_0.id=r1_0. project_request_status_history_id оставил присоединиться к d_project_request_reject_reasons p4_0 на p4_0.id=r1_0.reason_id оставил присоединиться к пользователям r2_0 на r2_0.id=p1_0.responsible_user_id где p1_0.bank_id=? порядок по p2_0.full_name по возрастанию, s1_0.id обнуляет последнее смещение? строки извлекаются первыми? только строки]; SQL [нет данных] Недавно мы перешли с SpringBoot 2 на версию 3, после этого кода код начал выдавать ошибку. До этого все работало нормально.
Проблема в этом отдельном вызове. Если я удалю его из метода спецификации, все будет хорошо.
basicSpecs.distinct() находится ниже:
@Override public Спецификация Different(Class rootClass) { возврат (корень, запрос, критерииBuilder) -> { query.distinct(истина); вернуть ноль; }; } Полная трассировка стека здесь: https://controlc.com/8b143ce7
Я ожидаю, что этот код будет работать так же хорошо, как и раньше. Я пытался переписать метод спецификации Different(), но не смог решить эту проблему.
Мобильная версия