spring - 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);
}
解决方案
如果参数包含双引号,您可以替换为空
推荐阅读
- c++ - 为什么 Gplmpgdec(GPL MPEG-1/2 DirectShow 解码器过滤器)会覆盖/绕行 IsDebuggerPresent?
- javascript - 节点 dotenv 不适用于 pm2
- powerbi - 从 PowerBI 中的累积列获取增量值
- powerpoint - 带有百分比编码的 mailto 超链接不会保存在 powerpoint 中
- javascript - 通过 AJAX 传递几个 PHP 动态变量
- javascript - 如何从子状态更改父状态 - Mobx 状态树?
- r - R Shiny - 数据表中的动态下载链接
- c++ - 使用推力(素数)在 GPU 中编译
- android - 存储 Appium 测试的最佳位置是什么?相同的 Android 存储库?分离的自动化存储库?
- java - 最后一次出现数字后的子字符串?(JAVA)