想象一下,我有一个包含一个表的数据库,这个表只有一个名为“word”的字段和一些其他数据,想象一下用户可以通过键入该字段的内容来搜索数据。我在这张桌子上用西班牙语口音说了很多话。
酸碱
AUTOBUS
载重汽车
如果用户搜索“acido”或“ácido”字样,查询将返回“ácido”行。如何使用Hibernate?
我正在使用Oracle 10g作为RDBMS和Hibernate命名查询。
提前致谢
答案 0 :(得分:2)
Hibernate将简单地将搜索传递到数据库。如果您的数据库设置为以不同方式识别它们,那么Hibernate也是如此。
在SQL Server中,您可以为列(或表或数据库 - 选择是您的)设置排序规则,以使该数据重音不敏感。怀疑其他DBMS中存在类似的机制,我认为这将是您最好的方法。
答案 1 :(得分:0)
最后,我在类似于此的命名查询中使用Oracle TRANSLATE函数:
<query name="queryName">
<![CDATA[
FROM Table
WHERE
upper(TRANSLATE(nivell_1,'ÀàÉÈéèÍíÓóÒòÚú','AaEEeeIiOoOoUu')) LIKE
upper(TRANSLATE(nivell_1,'ÀàÉÈéèÍíÓóÒòÚú','AaEEeeIiOoOoUu'))
]]>
</query>