Spring Boot миграция с 1.5 до 2.0 и кавычки вокруг параметров в запросах репозитория JPA - PullRequest
1 голос
/ 29 апреля 2020

Я обновляю приложение с Spring Boot 1.5 до 2.0, и мои репозитории Spring Data JPA повреждены. Я включил ведение журнала запросов в своем PostgreSQL 9,6 дБ, чтобы увидеть, что отличалось в запросах до и после обновления приложения, и заметил, что начиная с версии 2.0 параметры запроса заключаются в двойные кавычки, что не нужно и ломается. Вот что я вижу в журнале запросов:

Spring Boot 1.5.22

LOG:  execute <unnamed>: select siteentity0_.site_id as site_id1_14_, siteentity0_.description as descript2_14_, siteentity0_.directory as director3_14_, siteentity0_.ip_address as ip_addre4_14_, siteentity0_.name as name5_14_, siteentity0_.server as server6_14_, siteentity0_.status as status7_14_, siteentity0_.type as type8_14_ from site siteentity0_ where siteentity0_.ip_address=$1
DETAIL:  parameters: $1 = '127.0.0.1'

Spring Boot 2.0.9

LOG:  execute <unnamed>: select siteentity0_.site_id as site_id1_14_, siteentity0_.description as descript2_14_, siteentity0_.directory as director3_14_, siteentity0_.ip_address as ip_addre4_14_, siteentity0_.name as name5_14_, siteentity0_.server as server6_14_, siteentity0_.status as status7_14_, siteentity0_.type as type8_14_ from site siteentity0_ where siteentity0_.ip_address=$1
DETAIL:  parameters: $1 = '"127.0.0.1"'

Я проверил все заметки о выпуске и руководство по миграции и не могу найти ничего, что могло бы объяснить это, а также не могу найти никаких подобных отчетов. Есть идеи?

РЕДАКТИРОВАТЬ : хранилище:

import java.util.Collection;

import org.springframework.data.jpa.repository.JpaRepository;

public interface SiteRepository extends JpaRepository<SiteEntity, Integer> {
    SiteEntity findByName(String siteName);

    Collection<SiteEntity> findByIpAddress(String ipAddress);

    Collection<SiteEntity> findByStatus(String status);

    Collection<SiteEntity> findByType(String type);
}

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Я понял это. У меня был конвертер атрибутов для преобразования JSON в строку с autoApply, установленным в true. Я изменил это на ложное, и теперь это работает. Я полагаю, autoApply является более разрешающим в 2.x.

@Converter(autoApply = false)
public class JpaConverterJson implements AttributeConverter<Object, String> {
0 голосов
/ 29 апреля 2020

Вы можете заменить, если параметры содержат двойные кавычки на пустые

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...