【问题标题】:escaping values in Spring Data Repository在 Spring Data Repository 中转义值
【发布时间】:2015-06-12 00:03:09
【问题描述】:

我的 Spring 数据存储库中有以下内容:

@Query("select i from Image i where i.name like %:name% and deleted = false")
Collection<Image> findByName(@Param("name") String name);

该方法在数据库中搜索名称包含特定字符串的图像记录 - 因此是“like %:name%”。问题是,如果名称包含“like”运算符特有的字符(例如百分比或下划线),则不会对其进行转义。似乎这是由于 @Query 注释 - 没有它,一切都按预期工作。

如果我有一个名为“my%image”的图像并想搜索“y%”,则 SQL 将是“...like '%y\%%'

我的问题是如何让代码自动转义特殊字符?

【问题讨论】:

    标签: java spring repository


    【解决方案1】:

    我最终使用了本机查询:

    @Query(nativeQuery = true, value = "select * from asset where name like concat('%', replace(replace(:name, '%', '\\%'), '_', '\_'), '%')")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2018-07-18
      相关资源
      最近更新 更多