當在Postgres FTS中使用Hibernate時,tsquery看起來是合適的。但是,每次嘗試輸入「'」或其他一些奇怪字符的混合時,似乎都會出現主題異常。它甚至不接受兩個詞。如果用單引號括住字符串,則布爾運算符如|停止工作。我想知道是否有辦法處理這個異常。我爲每一種方法都添加了投擲,但它似乎把我的頭撞在牆上。這是我的代碼:在tsquery中處理SQLGrammarException:ERROR:語法錯誤:
"SELECT FROM cat c where "+ args.get(0)+" @@ "+ "to_tsquery("+ args.get(1) + ")";
這就是Hibernate產生的。
"Hibernate: select fulltextse0_.name as name2_ from posts fulltextse0_ where
fulltextse0_.textsearchable_index_col @@ to_tsquery(?)=true order by
fulltextse0_.id asc limit ?"
arg0是fulltext字段的名稱,arg1是從Web窗體傳遞給它的字符串。
顯示您的代碼。 –
@CraigRinger補充。謝謝。 – Noah
因此,您將代碼轉換爲使用'to_tsquery'參數的參數?上面顯示的代碼似乎與Hibernate生成的SQL不匹配。如果您將用戶輸入字符串直接替換爲SQL,則應將其顯示在SQL中,而不是作爲放置參數('?')插入。 –