【问题标题】:Use regex query with hibernate in Spring在 Spring 中使用带有 hibernate 的正则表达式查询
【发布时间】:2016-06-30 13:21:31
【问题描述】:

我能够在查询浏览器(我的 sql)中触发查询,并能够检索如下记录 SELECT * FROM details WHERE title REGEXP 'dem';

但是当我在服务器端使用类似类型的代码时,我会给出错误作为意外令牌:REGEXP

在网上搜索后,似乎hibernate不支持REGEXP。但也给出了一些与此无关的解决方案。我只需要在休眠中通过查询来处理这个问题。

sbQuery.append("select distinct id from deatil id");
sbQuery.append("where ((id.title like :keyword) OR (id.description like :keyword) ");

【问题讨论】:

  • 谢谢你,但对我来说这不起作用,因为我只需要正则表达式。鉴于我已经申请了解决方法,但这些不能满足我的要求,否则会产生更多问题。任何其他方式或建议

标签: java mysql regex spring hibernate


【解决方案1】:

您可以在 Hibernate 方言中为您的数据库添加自己的 custom function

我尝试添加一个比这更复杂一点的自定义函数,但我遇到了一些问题来使它工作,希望更简单的函数可以开箱即用。

【讨论】:

    【解决方案2】:
        Query query = session.createSQLQuery("select distinct id from deatil id where (id.title like :keyword) OR (id.description like :keyword)")
    

    .setParameter("关键字", 关键字); 列表结果 = query.list();

    缺少“)”,必须设置参数值。

    【讨论】:

    • 这不会被视为正则表达式。例如,我有一个字符串“我的 ARG 学生很适合为应用程序和内容付费”我想搜索好,然后我需要将 like 置于循环条件中。为了避免这种情况,我想使用正则表达式。总之关键字参数可以包含很多不同的关键字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多