我有以下存储库定义:
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
列表示序列化为 json 字符串的映射。所以基本上我想找到所有在invoice_documents_trackings
图中存储了特定trackingId
的指令。
当我执行该方法时,我总是得到 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, '%')"