Я возился с Spring Boot Data JPA и, почитав документацию, запутался. Какая разница?
Я понял, что оператор «Мне нравится» делает SQL без «%», окружающего мою строку (где имя, например «Строка»), а оператор «Содержит» создает SQL с «%», окружающим мою строку (где имя, например «% Нить%'). Я ошибаюсь?
Я использовал оператор «Нравится», и он отлично работает в ситуациях, когда «%» требуется с обеих сторон, поэтому я действительно запутался!
Вот что меня смущает. Я никогда не использовал «Содержит», просто «Мне нравится», и у меня есть операции, которые требуют «%» с обеих сторон, так что да! Мое приложение может найти "abcStringabc" с оператором "Нравится". Итак, с учетом этого, какая разница? Или я проклят, и это не должно произойти? (кстати, я использую Spring Boot Data 1.5.2)
Я предполагаю, что вы ищете последнюю документацию, но в старой версии нет никакой информации о содержании. docs.spring.io/spring-data/jpa/docs/1.5.2.RELEASE/reference/…
Это правильно, что вы можете подражать containing
с помощью like
.
Различия:
_
, которые соответствуют одному символу.containing
будет избегать подстановочных знаков, содержащихся в вашем аргументе поиска, что, как бы, нет. Поэтому при поиске abc%def
они ведут себя по-разному.
| containing | like (with additional `%` around the searchstring)
-------------------------------------------------------------------------------------
123abc%def456 | matches | matches
123abcXYZdef456 | does not match | matches
Это именно то, что я искал! Спасибо!
Можете ли вы найти abcStringabc с подобным оператором?