【问题标题】:How to use regular expression in Hibernate MySQL?如何在 Hibernate MySQL 中使用正则表达式?
【发布时间】:2017-08-30 06:19:10
【问题描述】:

如何在 MySQL 中为休眠中的选择查询添加正则表达式。我正在使用 ajax 数据表。我的项目在 Spring 4 MVC 和 Hibernate with MySQL 中。 我已经用 MongoDB 在 hibernate 中创建了这个,但我不知道如何在 MySQL 中使用。

使用 mongodb 代码休眠:

Query query = new Query();
query.addCriteria(Criteria.where("isDeleted").is(IsDeletedEnum.NOTDELETED));
String search = (String) rowStartIdxAndCount[4];
if (StringUtils.isNotBlank(search)) {
    String searchExp = ".*" + search + ".*";
    Criteria searchCriteria = new Criteria();
    searchCriteria.orOperator(Criteria.where("name").regex(searchExp, "i"),
        Criteria.where("mobileno").regex(searchExp, "i"),
        Criteria.where("email").regex(searchExp, "i"),
        Criteria.where("role").regex(searchExp, "i"));
    query.addCriteria(searchCriteria);
}

我正在尝试使用 MySQL 的 Hibernate。但不知道接下来我要写什么?我必须在名称、手机号、电子邮件和角色字段中添加正则表达式,用于或运算符。

    Session session = getSessionFactory().openSession();
    session.beginTransaction();
    String search = (String) rowStartIdxAndCount[4];
    String searchExp = ".*" + search + ".*";
    String hql ="SELECT * FROM UserBean WHERE isDeleted=isDeleted OR name REGEXP 'searchExp''i'";
    Query query = session.createQuery(hql);
    query.setParameter("isDeleted", IsDeletedEnum.NOTDELETED);

那该怎么做呢?请帮帮我。

【问题讨论】:

  • 你的意思是如何对多列进行搜索操作? @Harsh 在休眠中
  • 是的,但是使用 or 操作和正则表达式。你可以看到 MongoDB 代码。这是基于条件的查询,我必须创建基于 hql 的查询。
  • 给我 SQL 我把它转换成 HQL。我对 NoSQL 不太熟悉

标签: java mysql hibernate spring-mvc


【解决方案1】:

一一制定标准:

criteria1
.setProjection(Projections.property("name"))
.add(Restrictions.sqlRestriction("REGEXP pattern")

criteria2
.setProjection(Projections.property("mobileno"))
.add(Restrictions.sqlRestriction("REGEXP pattern")

criteria3
.setProjection(Projections.property("email"))
.add(Restrictions.sqlRestriction("REGEXP pattern")

criteria4
.setProjection(Projections.property("role"))
.add(Restrictions.sqlRestriction("REGEXP pattern")

然后将这些条件添加到休眠查询:

query.addCriteria(criteria1);
query.addCriteria(criteria2);
query.addCriteria(criteria3);
query.addCriteria(criteria4);

【讨论】:

  • 如何在正则表达式中添加(searchExp, "i")?我必须在其中添加两者。还有其他方法可以在基于 HQL 查询中创建它吗?
猜你喜欢
  • 1970-01-01
  • 2011-08-29
  • 2012-06-24
  • 1970-01-01
  • 2012-12-14
  • 2020-09-14
  • 1970-01-01
  • 2018-11-16
相关资源
最近更新 更多