powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / нужны регулярные выражения в hibernate
3 сообщений из 3, страница 1 из 1
нужны регулярные выражения в hibernate
    #34154914
trebogeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
help!!!! oracle 10g Хочу использовать регулярное выражение regexp_substr(string,'value1|value2|value3'). Написал вот такой вот код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
 public   class  InRegularExpression  implements  Criterion {

	 private   final  String propertyName;
	 private   final  String[] values;
         private   final  String regexpr;

     protected  InRegularExpression(String propertyName, String[] values, String regexpr) {
		 this .propertyName = propertyName;
		 this .values = values;
                           this .regexpr=regexpr;
    }

	 public  String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery)
	 throws  HibernateException {

        String column = criteriaQuery.getColumn(criteria, propertyName);

        String singleValueParam ="?";

        String params = values.length> 0  ?

        StringHelper.repeat( singleValueParam + "| ", values.length- 1  ) + singleValueParam :"";

       String regExpr=regexpr+"("+column+",(\'"+params+"\')) is not null";


         return  regExpr;
	}

	 public  TypedValue[] getTypedValues(Criteria criteria, CriteriaQuery criteriaQuery)
	 throws  HibernateException {
		ArrayList list =  new  ArrayList();
		Type type = criteriaQuery.getTypeUsingProjection(criteria, propertyName);
		 for  (  int  j= 0 ; j<values.length; j++ ) {
				list.add(  new  TypedValue( type, values[j], EntityMode.POJO ) );
			}

		 return  (TypedValue[]) list.toArray(  new  TypedValue[ list.size() ] );

    }

	 public  String toString() {
      return  "";
	}
}
вот так вызываю
Код: plaintext
criteria.add(CustomRestrictions.inRegExpr("cod", strings ,"regexp_substr"));
полученный запрос отрабатывает нормально если выполнить его через клиента, подставив вместо вопросиков какие-нибудь значения. А вот сам hibernate кидает ошибку

ORA-01006: bind variable does not exist

Думаю, что не может он сам вместо вопросов подставить значения. где я ошибся?
...
Рейтинг: 0 / 0
нужны регулярные выражения в hibernate
    #34157163
BlackWall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В SQL выражении нет такой переменной-привязки говорит.
...
Рейтинг: 0 / 0
нужны регулярные выражения в hibernate
    #34157213
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Распечатай то что возвращает toSqlString и getTypedValues/включи трейс хибернейта.

PS. Вот это фигня какая то
Код: plaintext
String regExpr = regexpr + "(" + column + ",(\'"+params+"\')) is not null";
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / нужны регулярные выражения в hibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]