java - 带有类似语句的 Spring Data 和本机查询
问题描述
我有以下存储库定义:
public interface InstructionRepository extends JpaRepositoryWithSpecification<Instruction> {
String FIND_INSTRUCTIONS_BY_TRACKING_ID_QUERY =
"SELECT * FROM instruction i WHERE i.invoice_documents_trackings like '%:trackingId%'";
@Query(value = FIND_INSTRUCTIONS_BY_TRACKING_ID_QUERY, nativeQuery = true)
List<Instruction> findByFileTrackingsContaining(@Param("trackingId") String trackingId);
}
我在这里使用原生查询的原因是因为invoice_documents_trackings
column 代表了一个序列化为 json 字符串的映射。所以基本上我想找到所有特定trackingId
存储在invoice_documents_trackings
地图中的指令。
当我执行该方法时,我总是得到 0 结果,尽管如果我手动执行相同的查询,我会得到预期的结果。
我还尝试更改查询,使其看起来像:
String FIND_INSTRUCTIONS_BY_TRACKING_ID_QUERY =
"SELECT * FROM instruction i WHERE i.invoice_documents_trackings like %:trackingId%"
这也不起作用。
真的很感激任何帮助,而不是
解决方案
我认为问题在于您使用的方式%
String FIND_INSTRUCTIONS_BY_TRACKING_ID_QUERY =
"SELECT * FROM instruction i WHERE i.invoice_documents_trackings like CONCAT('%', :trackingId, '%')"
推荐阅读
- list - 在 Flutter 中按类型排序列表和排序
- python - 从循环列表中自动创建单个变量
- python - 如何在 Python 中保存多个文件?
- python - 熊猫数据框检查一行的多列中是否存在值
- elasticsearch - 具有复杂对象的 Kibana 可视化
- reactjs - Ant Design 布局组件
- blazor - .NET Core Blazor Web 应用程序是否像 ASP.NET WebForms 一样进入休眠状态?
- listview - 当项目计数不在开始时如何阻止 Flutter 制作更多 ListView 项目
- python - SSL:在 Windows 上运行 python 程序时出现 CERTIFICATE_VERIFY_FAILED 错误
- typescript - 在 JavaScript 中创建对象类数组