JPA: Обрезает ли JPA строку перед поиском идентификатора - PullRequest
1 голос
/ 03 августа 2020

здесь я передаю user_id как "abc " или " abc ". Я использую DB2. теперь у меня есть abc в базе данных, но даже при добавлении пробела JPA успешно находит идентификатор и возвращает объект.

есть ли у нас какое-либо правило для обработки пространства в JPA.

Test test = testRepository.findByUserId(user_id).orElseThrow(
                () -> new UsernameNotFoundException("User Not Found with -> username " + user_id));

1 Ответ

1 голос
/ 03 августа 2020

Это связано с поведением по умолчанию в DB2, когда дело доходит до сравнения строк. Согласно соответствующей документации в Разделе Сравнение строк :

При сравнении символьных строк неравной длины сравнение выполняется с использованием логической копии более короткой строки, которая дополняется справа с пробелами, достаточными для увеличения длины до длины более длинной струны. Это логическое расширение выполняется для всех символьных строк, включая те, которые помечены как FOR BIT DATA.

Если вы хотите, чтобы пробелы не игнорировались, вам нужно вместо этого использовать функцию LIKE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...