[英]How to escape from '!' symbol in HQL
誰能幫助擺脫HQL中的NOT(!)符號。 我正在使用Postgres 8.3。 我也無法使用這些字符| \\?'()搜索
fts('english',COLUMN_NAME,'" + searchText + "') = true)
您應該綁定搜索文本,而不是手動將其與查詢連接。 它不僅可以解決您的問題,而且在安全性(SQL注入)和性能方面也更好(數據庫看到具有不同參數的同一查詢,從而可以在可能的情況下緩存已編譯的查詢)。
更改查詢,使其看起來像:
fts('english', COLUMN_NAME, :searchText) = true // using named parameters
// or
fts('english', COLUMN_NAME, ?) = true // using positional parameters
然后,您可以正確綁定參數:
session.createQuery(hqlQuery)
.setString("searchText", searchText)
.iterate();
// or
session.createQuery(hqlQuery)
.setString(0, searchText)
.iterate();
這與在JDBC中使用PreparedStatement
並設置參數的原理相同(主要區別在於,對於JDBC,參數的索引從1開始,對於HQL,參數的索引從0開始)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.