簡體   English   中英

休眠和特殊字符

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

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