簡體   English   中英

如何逃脫“!” HQL中的符號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM