【问题标题】:JPQL (JPA) search substringJPQL (JPA) 搜索子字符串
【发布时间】:2011-02-14 10:17:12
【问题描述】:

我面临通过某些(子)字符串搜索实体的简单问题,它们可能包含。

例如我有用户 user1、usr2、useeeer3、user4,我将进入搜索窗口“use”,我希望返回 user1、useeer3、user4。

我相信你现在明白我的意思了。 JPA(JQPL)中是否有任何构造?在命名查询中以某种方式使用 WHERE 进行搜索会很好。类似“SELECT u FROM User u WHERE u.nickname contains :substring”的内容

【问题讨论】:

    标签: java orm jpa jpql


    【解决方案1】:

    使用LIKE 表达式。以下是 JPA 1.0 规范 (JSR 220) 的 4.6.9 Like Expression 部分的引述:

    使用的语法 比较运算符[NOT] LIKE 条件表达式如下:

    string_expression [NOT] LIKE pattern_value [ESCAPE escape_character]
    

    string_expression 必须有一个 字符串值。 pattern_value 是一个 字符串文字或字符串值 输入参数,其中下划线 (_) 代表任何单个字符,a 百分比 (%) 字符代表任何 字符序列(包括 空序列),以及所有其他 人物代表自己。这 可选的 escape_character 是 单字符串文字或 字符值输入参数 (即charCharacter)并且是 用来逃避特殊含义 下划线和百分比字符 在pattern_value

    例如:

    • address.phone LIKE ‘12%3’ 对 ‘123’ ‘12993’ 为真,对 ‘1234’ 为假
    • asentence.word LIKE ‘l_se’ 对于 ‘loose’ 是 true,对于 ‘loose’ 是 false
    • aword.underscored LIKE ‘\_%’ ESCAPE ‘\’ 对于 ‘_foo’ 和 “酒吧”为假
    • address.phone NOT LIKE ‘12%3’ 对于 ‘123’ 和 ‘12993’ 是 false 和 true 对于“1234”

    如果的值 string_expressionpattern_valueNULL 或未知,的值 LIKE 表达式未知。如果 escape_character 已指定并且是 NULL,LIKE 的值 表达方式未知。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 2019-10-06
      • 2017-02-09
      • 2011-09-25
      • 2011-02-10
      • 2011-11-30
      相关资源
      最近更新 更多