【问题标题】:Spring predicate jpa query issueSpring谓词jpa查询问题
【发布时间】:2016-03-25 02:07:14
【问题描述】:

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

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 Jones 的记录。解决问题需要做什么。

【问题讨论】:

  • 为什么会这样?您正在转换为小写,您的参数包含大写和jack jones <> Jack Jones。您还需要小写输入。
  • 我试过没用。
  • expression.toString() 长什么样子?

标签: java mysql spring-data querydsl


【解决方案1】:

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

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

  • 名字
  • 一个常数空间
  • 姓氏

所以你的最后一行代码应该是这样的:

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

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2014-08-04
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2012-09-13
    • 1970-01-01
    相关资源
    最近更新 更多