Spring谓词jpa查询问题

时间:2015-12-18 11:14:12

标签: java mysql spring-data querydsl

我写了一个谓词查询来连接firstname和lastname并与输入的字符进行比较。但是,我无法得到所需的结果。

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

当我输入前端时,我没有得到Jack Joneas的记录。解决问题需要做些什么。

1 个答案:

答案 0 :(得分:1)

您的(Java)表达式" " + userProfile.lastName.toLowerCase()调用第二个参数的toString()方法,生成未定义的固定String表达式而不是动态表达式。

您实际想要实现的是连接3个部分:

  • 名字
  • 恒定空间
  • 姓氏

所以你的最后一行代码应如下所示:

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