【问题标题】:Spring Boot migration from 1.5 to 2.0 and quotes around parameters in JPA repository queriesSpring Boot 从 1.5 迁移到 2.0 并在 JPA 存储库查询中引用参数
【发布时间】:2020-04-29 17:55:15
【问题描述】:

我正在将应用程序从 Spring Boot 1.5 升级到 2.0,但我的 Spring Data JPA 存储库已损坏。我在我的 PostgreSQL 9.6 db 中打开了查询日志,以查看应用程序升级之前和之后查询的不同之处,并观察到从 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);
}

【问题讨论】:

  • 您可以在此处发布此查询的存储库代码吗?
  • 你确定你没有传递转义双引号的值吗?喜欢:findByIpAddress("\"127.0.0.1\"").
  • 我没有转义任何引号。除了将代码更新到 Spring Boot 2.0 的最低限度之外,代码没有任何变化。

标签: spring spring-boot spring-data-jpa


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我想通了。我有一个属性转换器,用于将自动应用设置为 true 的 JSON 转换为字符串。我将其更改为 false,现在它可以工作了。我想 autoApply 在 2.x 中更宽松。

    @Converter(autoApply = false)
    public class JpaConverterJson implements AttributeConverter<Object, String> {
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-11
      • 2018-09-18
      • 2021-04-16
      • 1970-01-01
      • 2019-04-22
      • 2019-10-22
      • 1970-01-01
      • 2021-09-15
      相关资源
      最近更新 更多