【问题标题】:Hibernate Regex休眠正则表达式
【发布时间】:2013-01-09 20:01:13
【问题描述】:

我正在尝试构建一个可以通过 HQL 正则表达式关键字搜索的 API,

编辑: 在 HQL 中执行正则表达式搜索的最佳方法是使用条件 Restrictions.like() 或 Restrictions.ilike()。

public static List<Object> createQueryAnd(Criteria cri,
        ArrayList<Parameters> list) {

    for (Parameters p : list) {
        String value = (String) p.value;
        if (value.contains("*")) {
            value = value.replace("*", "%");
        } else {
            value += "%";
        }
        Criterion c1 = Restrictions.ilike(p.property, value);
        cri.add(c1);

    }

    return cri.list();
}

希望这对某人有所帮助

【问题讨论】:

  • Y 这被否决了吗?这是一个愚蠢的问题吗?
  • 对我有帮助,谢谢!为你投票 =)

标签: regex hibernate hql


【解决方案1】:

HQL 没有正则表达式。如果要对正则表达式使用数据库提供程序特定的构造,则应修改方言。 This 问题包含有关如何使用 Oracle 数据库执行此操作的讨论。

【讨论】:

  • postgres 方言有什么特别之处吗?
  • 扩展 HQL 时必须依赖 PostgreSQL 中可用的函数/运算符:postgresql.org/docs/9.2/static/functions-matching.html
  • 谢谢...这似乎有效:SELECT * from table where regexp_matches(colname, 'lan*'); ?
  • 没有。如前所述,HQL 中不支持正则表达式,Hibernate 条件查询也不支持。为了让它工作,你必须实现它(实现的一部分是扩展方言)。此外,您的查询似乎是 SQL 而不是 HQL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 2015-10-26
  • 1970-01-01
  • 2012-10-02
相关资源
最近更新 更多