Hibernate 条件or查询 循环多个or条件
今天公司让我做一个列表查询页面,因为还是对于hibernate的不熟悉刚出来经验不足,代码敲得少,所有导致了种种困难…页面左边有个多级菜单栏,因为种种需求需要我用到SQL查询条件里面的or(或者),但因为用的是hibernate所以我苦苦在网上搜寻,得到了如下代码:
1 Criteria criteria = this.createCriteria(); 2 criteria.add(Restrictions.or(Restrictions.eq("name","a"),Restrictions.eq("name","b")));
但是这样只能是一次写一个or条件,我的需求需要我写类似name=”a”or name=”b” or name=”c”……
所有我又继续搜索,得到了如下代码:
1 Criteria criteria = this.createCriteria(); 2 Disjunction dis = Restrictions.disjunction(); 3 for (int i = 0; i < 5; i++) { 4 dis.add(Restrictions.eq("name", ""+i)); 5 } 6 criteria .add(dis);
问题完美解决。
所有当只需要一个or条件时可以用Restrictions.or();当用到多个or条件时,就需要用到Restrictions.disjunction();
相关推荐
criteria.add(Restrictions.and(statusCrit, dateCrit)); ``` 9. **投影(Projections)、聚合(aggregation)和分组(grouping)** 投影用于指定查询返回的属性,聚合用于计算属性值,分组则将结果按属性分组。...
Criteria API还提供了其他功能,如限制结果集大小(`setMaxResults()`),按特定顺序排序(`addOrder(Order)`),以及添加多个查询条件(`createCriteria()`和`createAlias()`)。 总结来说,Hibernate Criteria ...
Hibernate条件查询Criteria.docHibernate条件查询Criteria.doc
查询条件是通过`org.hibernate.criterion.Restrictions` 类来定义的,这个类提供了许多静态方法来模拟SQL语句中的条件,例如`eq` (等于)、`gt` (大于)、`in` (包含在列表中)等。 #### 三、简单Criteria查询示例 ...
使用 `Restrictions.or()` 方法组合多个条件: ```java Criterion crit1 = Restrictions.or(Restrictions.eq("name", "刘伟"), Restrictions.between("id", 100, 1000)); ``` 7. 原生 SQL 语句: 虽然不推荐,...
你可以使用Restrictions的and()和or()方法来创建Junction实例并添加多个条件。 **Example** 是一种特殊类型的Criterion,它基于一个实体对象创建查询条件。你可以忽略大小写,设置模糊匹配等,使得查询更加灵活。 ...
Hibernate 的 Criteria 是一个完全面向对象、可扩展的条件查询 API,通过它完全不需要考虑数据库底层如何实现、SQL 语句如何实现。Criteria 提供了灵活的查询条件组装方式,能够满足开发中复杂的查询需求。 一、...
criteria.add(Restrictions.or(nameCriterion, emailCriterion)); List<User> users = criteria.list(); ``` ##### 示例3:使用SQL通配符 除了标准的Java通配符之外,还可以使用SQL通配符。这主要是通过`...
例如,创建一个 Criteria 实例 org.hibernate.Criteria 接口表示,可以使用 Criteria 的 add(Criterion criterion) 方法来添加查询条件。Criterion 可以使用 Restrictions 工具类来创建,例如使用 eq、ge、between ...
1. **Criteria**:`org.hibernate.Criteria` 接口是 Criteria 查询的核心,它提供了各种方法来设置查询条件。 2. **Criterion**:`org.hibernate.criterion.Criterion` 接口定义了一个查询标准,用于表示查询条件。 ...
3. **组合条件**:除了单个条件外,还可以通过`Conjunction`(AND)和`Disjunction`(OR)来组合多个条件。例如,查找年龄大于30且城市为北京的用户: ```java Criteria crit = session.createCriteria(User.class...
7. `Restrictions.and`, `Restrictions.or`: 用于组合多个条件,分别对应逻辑与(AND)和逻辑或(OR)。例如,`Restrictions.and(restriction1, restriction2)`表示同时满足`restriction1`和`restriction2`的条件,`...
Junction接口(包括conjunction和disjunction)用于组合多个Criterion,分别表示逻辑AND和OR。Restrictions工具类提供了创建Criterion的静态方法,例如`eq()`、`ge()`、`between()`等。 Example是另一种特殊的...
criteria.add(Restrictions.like("username", "%" + keyword + "%")); List<User> users = criteria.list(); transaction.commit(); return users; } catch (Exception e) { if (transaction != null) { ...
criteria.add(Restrictions.like("name", "%Tom%")); ``` - 聚合查询: ```java criteria.setProjection(Projections.count("id")); ``` 3. **利用DetachedCriteria** ```java DetachedCriteria ...
此代码片段中,首先创建了一个针对`Room`实体的`Criteria`对象,并通过`createCriteria("users")`方法创建了一个关联子查询来获取与房间关联的用户列表,并设置条件筛选出年龄为30岁的用户。 以上就是关于Hibernate...
criteria.createCriteria("projects").add(Restrictions.isNotEmpty("name")); ``` 子查询可以使用`Subqueries`类来构建。比如,找到年龄比平均年龄大的用户: ```java DetachedCriteria avgAge = ...
NULL 博文链接:https://chenlinbo.iteye.com/blog/335677