2013-01-09 3 views
1

Я пытаюсь построить API, который может выполнять поиск по ключевым словам HQL регулярных выражений,Hibernate Regex

Редакцией: Лучший способ для выполнения регулярных выражений поиска в HQL заключается в использовании критериев, Restrictions.like() или Restrictions.ilike().

public static List<Object> createQueryAnd(Criteria cri, 
     ArrayList<Parameters> list) { 

    for (Parameters p : list) { 
     String value = (String) p.value; 
     if (value.contains("*")) { 
      value = value.replace("*", "%"); 
     } else { 
      value += "%"; 
     } 
     Criterion c1 = Restrictions.ilike(p.property, value); 
     cri.add(c1); 

    } 

    return cri.list(); 
} 

Надеется, что это помогает кому-то

+0

Y Это проголосовали? это был глупый вопрос? –

+0

Это помогло мне, спасибо! Голосовать за вас =) – Dmitry

ответ

4

HQL не имеет регулярные выражений. Если вы хотите использовать конструкторы конкретных поставщиков баз данных для регулярного выражения, Dialect должен быть изменен. This вопрос содержит обсуждение того, как это сделать с базой данных Oracle.

+1

Есть ли что-то особенное для диалекта postgres? –

+0

Вы должны зависеть от функций/операторов, доступных в PostgreSQL при расширении HQL: http://www.postgresql.org/docs/9.2/static/functions-matching.html –

+0

Спасибо ... Кажется, это работает: SELECT * из таблицы, где regexp_matches (colname, 'lan *'); ? –

Смежные вопросы