2015-12-18 1 views
0

Я написал предикатный запрос для concat firstname и lastname и сравните с введенным символом. Но я не могу получить желаемый результат.Проблема с предикатом sppa jpa

QUser user = QUser.suer; 
BooleanExpression exp = user.isNotNull(); 
String received = "Jack Jones" 
expression = expression.and((userProfile.firstName.toLowerCase().concat(" " + userProfile.lastName.toLowerCase())).like('%'+(received)+'%')); 

Я не получаю запись с Джеком Джонсом, когда я печатаю переднюю часть. Что нужно сделать для решения проблемы.

+1

An d почему это должно быть? Вы конвертируете в нижний регистр, ваш параметр содержит заглавные буквы и 'jack jones <> Jack Jones'. Вам также потребуется ввести строчный ввод ввода. –

+0

Я пробовал, он не работал. – Karthik

+1

Как выглядит выражение.toString()? –

ответ

1

Выражение (Java) " " + userProfile.lastName.toLowerCase() вызывает метод toString() второго аргумента, создавая неопределенное фиксированное выражение String вместо динамического выражения.

То, что вы на самом деле хотите добиться того, чтобы сцепить 3 части:

  • первое имя
  • постоянное пространство
  • фамилия

Так что ваша последняя строка кода должна выглядят так:

expression = expression.and((userProfile.firstName.toLowerCase().concat(" ").concat(userProfile.lastName.toLowerCase())).like('%'+(received)+'%')); 
+0

работал согласно ожиданиям. – Karthik