【问题标题】:How to add if conditions in hibernate criteria while using restrictions如何在使用限制时在休眠条件中添加 if 条件
【发布时间】:2018-01-21 14:06:12
【问题描述】:

我正在学习休眠条件查询。我想使用休眠条件查询进行搜索。 以下是我的搜索字段

搜索字段

这是我的搜索代码

Criteria criteria = session.createCriteria(User.class);
criteria.add(
        Restrictions.and(
        Restrictions.ilike("firstName", firstName),
        Restrictions.ilike("lastName", lastName)
        )
    );

我面临的问题是仅使用名字进行搜索时,它将把姓氏作为空字符串,并且由于名字和姓氏之间的“AND”条件。它没有得到任何匹配的结果。现在我想添加条件,以便如果任何搜索字段为空或 null 则它不会包含在查询中。 基本上我在 grails 中工作,所以在 grails 中可以这样实现

def userList = userCriteria.list{
    and{    
        if(firstName) {
            like('firstName',firstName)
        }
        if(lastName) {
            like('lastName',lastName)
        }
       }
}

我想对休眠条件查询做同样的事情。

【问题讨论】:

    标签: java hibernate


    【解决方案1】:
    if (!Strings.isBlankOrNull(firstName)) {
        criteria.add(Restrictions.ilike("firstName", firstName));
    }
    if (!Strings.isBlankOrNull(lastName)) {
        criteria.add(Restrictions.ilike("lastName", lastName));
    }
    

    请注意,您正在学习 old, deprecated, proprietary, abandoned API。你最好学习标准的 JPA 标准 API。

    【讨论】:

    • 您好,感谢您的回复,目前我使用的是 4.3.11。那么我应该转向hibernate 5.1版本吗?
    猜你喜欢
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多