Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / нужны регулярные выражения в hibernate / 3 сообщений из 3, страница 1 из 1
24.11.2006, 21:30:51
    #34154914
trebogeer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны регулярные выражения в hibernate
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
27.11.2006, 11:45:01
    #34157163
BlackWall
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны регулярные выражения в hibernate
В SQL выражении нет такой переменной-привязки говорит.
...
Рейтинг: 0 / 0
27.11.2006, 11:57:02
    #34157213
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужны регулярные выражения в hibernate
Распечатай то что возвращает toSqlString и getTypedValues/включи трейс хибернейта.

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


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