Спящие и специальные символы - PullRequest
0 голосов
/ 26 марта 2009

Представьте, что у меня есть база данных с одной таблицей, в этой таблице есть только одно поле с именем "word" и некоторые другие данные. Представьте также, что пользователь может искать данные, вводя содержимое этого поля. У меня на столе много слов с испанскими акцентами.

Примеры слов

Acido

autobús

CAMION

Вопрос

Если пользователь ищет слова «acido» или «ácido», запрос возвращает строку «ácido». Как это сделать с Hibernate?

Редактировать

Я использую Oracle 10g в качестве RDBMS и именованный запрос Hibernate.

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 26 марта 2009

Hibernate просто передаст поиск в базу данных. Если ваша база данных настроена на распознавание их по-разному, то будет и Hibernate.

В SQL Server вы можете установить параметры сортировки для столбца (или таблицы или базы данных - выбор за вами), чтобы сделать эти данные нечувствительными к ударению. Подозреваю, что в других СУБД есть подобные механизмы, и я бы сказал, что это будет вашим лучшим подходом.

0 голосов
/ 26 марта 2009

Наконец, я использую функцию Oracle TRANSLATE в именованном запросе, подобном следующему:

  <query name="queryName">
  <![CDATA[
        FROM Table
        WHERE 
          upper(TRANSLATE(nivell_1,'ÀàÉÈéèÍíÓóÒòÚú','AaEEeeIiOoOoUu')) LIKE
          upper(TRANSLATE(nivell_1,'ÀàÉÈéèÍíÓóÒòÚú','AaEEeeIiOoOoUu'))
  ]]>         
  </query>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...