|
|
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
Люди, я совсем запуталась. Помогите Решила попробовать Criteria API Hib: Код: java 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. Передаю: Код: java 1. 2. 3. Когда передаю по отдельности эти значения(т.е. поиск по одному like), все работает, когда вместе пытаюсь, чтобы наложить фильтры, ничего не выводит, ПОЧЕМУ???? запрос, который генерит хибер при этом: Код: java 1. ЧТО Я ДЕЛАЮ НЕ ТАК? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2014, 17:22 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
Берём трассировки, минимально причёсываем запрос, скармливаем штатному sql-инструменту и смотрим - есть ли такие записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2014, 18:22 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
JulT, на стыке Java и SQL спорные вопросы можно решать прямыми запросами в БД. Подключись к БД и выполни следующий код. Код: sql 1. Установи limit строк сколько надо. По поводу знаков %. Умный билдер выражений или механизм биндинга может их врапить. И здесь надо уточнить в каком виде % приходит в SQL машину. Возможно тебе вместо bind variable нужно сделать string substitution. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2014, 18:24 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
mayton Код: sql 1. 2. 3. 4. 5. Ну или "около того", так как иначе - задлянафига тут like? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2014, 23:40 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
Сделала запрос напрямую в mysql, без всяких спрингов и хиберов. Результат с OR на скрине, как только ставлю в запросе AND - пусто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 07:03 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
короче судя по всему я неправильно поняла работу оператора лайк. всем огромное спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 07:29 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
JulT, У хибера уже есть лайк с игнором Код: java 1. судя по предыдущей теме, у вас запрос отрабатывает нормально, просто те условия которые вы применяете выдают результат только по ИЛИ. ЗЫ Кстати, хорошо бы писать как именно решили проблему, а то ценность темы "0", есть проблема, но нет решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 08:50 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
DDiverJulT, У хибера уже есть лайк с игнором Код: java 1. судя по предыдущей теме, у вас запрос отрабатывает нормально, просто те условия которые вы применяете выдают результат только по ИЛИ. ЗЫ Кстати, хорошо бы писать как именно решили проблему, а то ценность темы "0", есть проблема, но нет решения. да собственно вы правы про условия.... нужно раньше с работы уходить, утром приходишь и все становится на свои места :) я решила сделать так: Код: java 1. если я правильно понимаю, то такой способ предохраняет от инъекций. поэтому в моем случае ilike заменяется на like lower в запросе. а если бы делала так: Код: java 1. , то вы правы, проще написать ilike нежели игнорКейс. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 09:04 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
JulT, ради интереса попробовал сделать инжект вот таким образом Код: java 1. 2. 3. эффекта ноль. Хотя если подставить в любой sql редактор, то всё отрабатывает на ура. Беглый поиск по гуглу, говорит что Criteria API в достаточной мере защищает от sql injection, как в принципе и любой другой механиз, если вы не получаете свой sql запрос конкатенацией строк. ЗЫ если это действительно так, нет смысла городить огород, достаточно и ilike. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 10:43 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
DDiverЗЫ если это действительно так, нет смысла городить огород, достаточно и ilike. Любой адеватный фреймверк использует binding variables (PreparedStatement) и никакие SQL туда не заинжектить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 11:02 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, тогда я не очень понимаю как оно в данном случае работает. при запросе как я писал выше, в БД, судя по логу из p6spy, улетает вот такой запрос Код: sql 1. данный запрос прекрасно выполняется, никаких ошибок не вываливается(хотя select написано с ошибкой), но и результата тоже никакого. Как видно никаких символов не заменено, т.е. всё как и было в начале. если ручками выполнить такой запрос в том же Oracle sql developer, то отрабатывают всё 3 запроса(если селект поправить) вопрос как оно работает? почему нет ошибки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 12:20 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
DDiver, p6spy это же JDBC прокси? Он может сам за инлайнить переменные в SQL для более наглядного логирования. Смотреть на лог на уровне SQL сервера или родной hibernate-овский. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 12:25 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, сам хибер выдаёт вот такое Код: plaintext всё больше и больше походит на магию :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 13:03 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
DDiverсам хибер выдаёт вот такое Код: plaintext С фига ли оно тоже самое?? Написано же - binding parameter. А не часть SQL запроса. Поэтому никакой инъекции быть не может. DDiverвсё больше и больше походит на магию :) Чо? Какую нафиг магию? Что именно не понятно? Давай объясню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 13:07 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
JulTСделала запрос напрямую в mysql, без всяких спрингов и хиберов. Результат с OR на скрине, как только ставлю в запросе AND - пусто JulT. Ты уверена что ты вообще правильно понимаешь постановку? Тебе нужно "объединение" условий или их "пересечение"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 13:10 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, точно, что-то я зациклился на самом sql и забыл что есть ещё и такой механизм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 13:30 |
|
||
|
Схожу с ума...
|
|||
|---|---|---|---|
|
#18+
maytonJulTСделала запрос напрямую в mysql, без всяких спрингов и хиберов. Результат с OR на скрине, как только ставлю в запросе AND - пусто JulT. Ты уверена что ты вообще правильно понимаешь постановку? Тебе нужно "объединение" условий или их "пересечение"? да уже все хорошо, and работает как надо, шеф доволен) спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2014, 14:21 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38717764&tid=2126755]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
1730ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 2018ms |

| 0 / 0 |
