首页 > 解决方案 > Spring Boot 从 1.5 迁移到 2.0 并在 JPA 存储库查询中引用参数

问题描述

我正在将应用程序从 Spring Boot 1.5 升级到 2.0,并且我的 Spring Data JPA 存储库已损坏。我在我的 PostgreSQL 9.6 db 中打开了查询日志,以查看应用程序升级之前和之后查询的不同之处,并观察到从 2.0 开始,查询参数被用双引号括起来,这是不必要的和破坏性的。这是我在查询日志中看到的内容:

春季启动 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'

春季启动 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);
}

标签: springspring-bootspring-data-jpa

解决方案


如果参数包含双引号,您可以替换为空


推荐阅读