当前位置: 首页 > 面试题库 >

Hibernate Criteria API中的LIKE限制

艾宁
2023-03-14
问题内容

我正在尝试使用like()带有部分关键字的Hibernate限制条件查询PostgreSQL数据库:

Criterion c1 = Restrictions.like("stateName", "Virg*");
cri.add(c1);

return cri.list();

它不返回任何内容,但Restrictions.like("stateName", "Virginia");返回正确的记录。如何在Hibernate中使用部分 类似的 限制?

编辑:
通过执行以下操作使其正常工作:

public static List<Object> createQueryStringByRegex(Criteria cri, Parameters p) {
    String value = (String) p.value;
    if (value.contains("*")) {
        value = value.replace("*", "%");
    } else {
        value += "%";
    }
    // System.out.println("Value: "+value);
    Criterion c1 = Restrictions.ilike(p.property, value);
    cri.add(c1);

    return cri.list();

}

问题答案:

使用枚举MatchMode可以帮助您:

Criterion c1 = Restrictions.like("stateName", "Virg", MatchMode.START);

请勿使用任何特殊字符,例如*。而且,如果您希望使用不区分大小写的like,请使用ilike。



 类似资料:
  • 问题内容: 我想写一个类似的查询,但它不返回任何东西: -它不起作用。 完美地工作。 这是我的代码: 问题答案: Spring数据JPA查询需要“%”字符以及查询中的空格字符,如 。 cf. http://docs.spring.io/spring- data/jpa/docs/current/reference/html 。 您可能希望完全摆脱注释,因为它看起来类似于标准查询(由spring数据

  • 问题内容: 我有一张表格,其中包含有关零售店的信息。我有一个零售链名称的列表(WalMart,Target,Eaton等)。当用户选择一个时,我基本上会运行一个查询来查找与该链有关的任何内容。 例如,如果用户选择“ WalMart”,则查询将返回名称中带有单词“ WalMart”的任何内容(WalMart Scarborough,WalMart Supercenter Toronto,WalMar

  • 是否可以在REST apiendpoint中传递带有'like'关键字的参数。基本上,我试图创建一个endpoint,其中我将查询数据库以获得基于'%name%'的项目列表。数据库中的相应查询如下所示: 因此,我需要向RESTendpoint添加参数,其中我可以基于name=%Arjun%获取teh数据,这真的可能吗? 谢谢阿琼

  • 在 PostgreSQL 数据库中,我们如果要获取包含某些字符的数据,可以使用 LIKE 子句。 在 LIKE 子句中,通常与通配符结合使用,通配符表示任意字符,在 PostgreSQL 中,主要有以下两种通配符: 百分号 % 下划线 _ 如果没有使用以上两种通配符,LIKE 子句和等号 = 得到的结果是一样的。 语法 以下是使用 LIKE 子句搭配百分号 % 和下划线 _ 从数据库中获取数据的通

  • 主要内容:语法,示例SQL LIKE 子句用于在 WHERE 语句中进行模糊匹配,它会将给定的匹配模式和某个字段进行比较,匹配成功则选取,否则不选取。 LIKE 子句可以和通配符一起使用: 通配符 说明 百分号(%) 代表零个、一个或者多个任意的字符。 下划线(_) 代表单个字符或者数字。 [charlist] 字符列表中的任何单一字符。可以使用连字符(-)根据 ASCII 编码指定一个字符范围,例如: [0-9]

  • 问题内容: 我如何在hibernate中使用。我想在文件中使用SQL 。我有2个查询,我要合并为1个。 查询如下所示: 我也试过了。我使用了不带like子句的方法,它起作用。但是不起作用。 包装的异常: 这就是我传递参数的方式: 试过|| 并得到以下异常: 问题答案: 也许user_id不是char / varchar?您必须先将带有str()的user_id转换为字符数据! 例: