|
|
|
Hibernate + regexp
|
|||
|---|---|---|---|
|
#18+
Подскажите как написать на HQL запрос который будет искать объект по простенькому паттерну: у меня есть поле name, и пользователь может вводить его вместе с "*" и "?" - как писк в винде. Как это можно сдеать? И есть ли возможности искать по регулярному выражению? Или нужно запрашивать всё и потом делать Regex.Match? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 21:46 |
|
||
|
Hibernate + regexp
|
|||
|---|---|---|---|
|
#18+
Я думаю, что невозможно. В SQL нет стандарта на RegExp - а все HSL транслируются в SQL. Так чо Regex.Match верный путь, однако ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 22:06 |
|
||
|
Hibernate + regexp
|
|||
|---|---|---|---|
|
#18+
andrushokЯ думаю, что невозможно. В SQL нет стандарта на RegExp - а все HSL транслируются в SQL. Так чо Regex.Match верный путь, однако Ну а если надо осуществить поиск как мы в винде делаем - с "*" "?", неужели нельзя!? Вот в Oracle 10.G есть regex_substr, кажется. В принципе на нём всё и будет работать. Но через jdbc нельзя - начальник убьёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 22:11 |
|
||
|
Hibernate + regexp
|
|||
|---|---|---|---|
|
#18+
В SQL есть LIKE - шо совсем не RegExp. Ну а всяки там функции - пожалте. Их даже к Hibernate прикрутить можно через вызов SP например. Вот тольки в самом Hibernate я ничего подобного не видел. Хотя, я еще не очень его хорошо знаю ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2005, 23:20 |
|
||
|
Hibernate + regexp
|
|||
|---|---|---|---|
|
#18+
Так есть же Session.createSQLQuery() для Native SQL запросов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2005, 09:43 |
|
||
|
Hibernate + regexp
|
|||
|---|---|---|---|
|
#18+
XMТак есть же Session.createSQLQuery() для Native SQL запросов? Так не пойдёт. Нужно чтоб переносимо было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2005, 12:28 |
|
||
|
Hibernate + regexp
|
|||
|---|---|---|---|
|
#18+
lev* Я бы написал stored procedure на SQL-диалекте вашей СУБД и использовал его из DAO-слоя. HQL тут скорее всего будет не эффективен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2005, 12:40 |
|
||
|
Hibernate + regexp
|
|||
|---|---|---|---|
|
#18+
funikovyuri lev* Я бы написал stored procedure на SQL-диалекте вашей СУБД и использовал его из DAO-слоя. HQL тут скорее всего будет не эффективен К сожалению, нужно делать это только средствами Hibernate, т.к. чисто теоретически всё должно работать "везде", но работать будет только на Oracle 10g, а там даже есть что-то типа regexp встроенного. Но мне пока нужно только ? и * реализовать, и я бы хотел это сделать при помощи Criteria: List cats = sess.createCriteria(Cat.class) .add( Expression.like("name", "Fritz%") ) .add( Expression.or( Expression.eq( "age", new Integer(0) ), Expression.isNull("age") ) ) .list(); Остаётся вопрос: * -> %, ? -> _, а как в hibernate escape посл-ть задавать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2005, 13:04 |
|
||
|
Hibernate + regexp
|
|||
|---|---|---|---|
|
#18+
HQL отображается на SQL. Хотите 100% переносимость без какой-либо адаптации к платформе - придется использовать Ansi SQL. Там вроде про RegEx ничего нет, так что ваша задача в таком виде решаться не будет. Если сможете - выкручивайтесь с помощью like ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2005, 13:15 |
|
||
|
Hibernate + regexp
|
|||
|---|---|---|---|
|
#18+
funikovyuriHQL отображается на SQL. Хотите 100% переносимость без какой-либо адаптации к платформе - придется использовать Ansi SQL. Там вроде про RegEx ничего нет, так что ваша задача в таком виде решаться не будет. Если сможете - выкручивайтесь с помощью like Я же говорю, что я regexp через hql делать не буду, а хочу сделать поиск по простейшим шаблонам: * - ноль или много, и ? - один. и хочу сделать like (типа createCriteria(Cat.class) .add( Expression.like("name", "Fritz%") ), но не знаю как здесь задать escape посл-ть - ведь в имени могут встречаться, например, подчёркивания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2005, 13:34 |
|
||
|
Hibernate + regexp
|
|||
|---|---|---|---|
|
#18+
А фантазию проявить? :) Код: 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. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2005, 14:01 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33090456&tid=2152300]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
98ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 424ms |

| 0 / 0 |
