[英]Hibernate and special chars
假設我有一個包含一個表的數據庫,該表只有一個名為“ word”的字段和其他一些數據,還可以想象用戶可以通過鍵入該字段的內容來搜索數據。 我在這張桌子上有很多帶有西班牙口音的單詞。
酸鹼
AUTOBUS
CAMION
如果用戶搜索“ acido”或“ácido”單詞,查詢將返回“ácido”行。 Hibernate如何處理?
我使用Oracle 10g作為RDBMS和Hibernate命名查詢。
提前致謝
Hibernate只會將搜索傳遞到數據庫。 如果您的數據庫設置為以不同方式識別這些,則Hibernate也將如此。
在SQL Server中,您可以為列(或表或數據庫-由您自己選擇)設置排序規則,以使該數據對口音不敏感。 懷疑其他DBMS中也有類似的機制,我想這將是您最好的方法。
最后,我在類似於以下的命名查詢中使用Oracle TRANSLATE函數:
<query name="queryName">
<![CDATA[
FROM Table
WHERE
upper(TRANSLATE(nivell_1,'ÀàÉÈéèÍíÓóÒòÚú','AaEEeeIiOoOoUu')) LIKE
upper(TRANSLATE(nivell_1,'ÀàÉÈéèÍíÓóÒòÚú','AaEEeeIiOoOoUu'))
]]>
</query>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.