2015-06-09 37 views
0

我已經在我的春數據倉庫以下:轉義值

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

的方法搜索圖像記錄其名稱包含特定字符串的數據庫 - 因此「就像%:名稱%」 。問題是,如果名稱包含一個對「like」運算符特殊的字符(如百分比或下劃線),則不會被轉義。看起來像這是由於@Query註釋 - 沒有它,一切都按預期工作。

如果我有一個圖像命名爲「我的%的圖像」,並想搜索「Y%」,則SQL會一直」 ......像‘%Y \ %%’

我的問題是?我怎麼使代碼自動特殊字符轉義

回答

1

我最終使用本機查詢:

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