`

Hibernate Criteria Restrictions Apply

阅读更多
/**  
 * Filename:    hibernate→com.happy.test.metadata→AllProperty.java 
 * Description:   
 * Copyright:   Copyright (c)2011 
 * Company:     Idcorner 
 * @author:     happy   qiaolevip@gmail.com
 * @version:    1.0  
 * Create at:   12:29:56 AM 
 *  
 * Modification History:  
 * Date         Author      Version     Description  
 * ------------------------------------------------------------------  
 * 12:29:56 AM   Joe        1.0        1.0 Version  
 */
package com.happy.test.criteria;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

import org.hibernate.Criteria;
import org.hibernate.Hibernate;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import com.happy.dao.BaseHibernateDAO;
import com.happy.entity.AwardNums;
import com.happy.test.util.HandleList;

/**
 * @author happy
 * 
 */
public class Restriction extends BaseHibernateDAO {

	public static void main(String[] args) {
		Restriction query = new Restriction();
		query.query();
	}

	/**
	 * 获取查询别名
	 */
	@SuppressWarnings("unchecked")
	public void queryAlias() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// 获取别名:eg:this
		System.out.println(criteria.getAlias());
		HandleList.print(criteria.list());
	}

	/**
	 * 对查询排序
	 */
	@SuppressWarnings("unchecked")
	public void queryOrder() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		criteria.addOrder(Order.desc("id"));
		HandleList.print(criteria.list());
	}

	/**
	 * query by Between
	 */
	@SuppressWarnings("unchecked")
	public void queryBetween() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// 第一个参数是属性,第一个是小的数值,第三个是大的数值
		criteria.add(Restrictions.between("id", 17720820, 17720830));
		HandleList.print(criteria.list());
	}

	/**
	 * query by idEq
	 */
	@SuppressWarnings("unchecked")
	public void queryIdEq() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// 第一个参数是属性,第一个是小的数值,第三个是大的数值
		criteria.add(Restrictions.idEq(17720820));
		HandleList.print(criteria.list());
	}

	/**
	 * 忽略大小写查询query by ilike
	 */
	@SuppressWarnings("unchecked")
	public void queryIlike() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// 忽略大小写,05结束的
		criteria.add(Restrictions.ilike("numbers", "05", MatchMode.END));
		HandleList.print(criteria.list());
	}

	/**
	 * 正常like查询 query by like sql:this_.numbers like ?
	 */
	@SuppressWarnings("unchecked")
	public void queryLike() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// 05介绍的
		criteria.add(Restrictions.like("numbers", "05", MatchMode.END));
		HandleList.print(criteria.list());
	}

	/**
	 * 正常like查询 query by like sql:this_.numbers like ?
	 */
	@SuppressWarnings("unchecked")
	public void queryLike2() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// 05开始的
		criteria.add(Restrictions.like("numbers", "05%"));
		HandleList.print(criteria.list());
	}

	@SuppressWarnings("unchecked")
	public void queryInArray() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// new int[]错误的
		Integer[] arrInt = new Integer[] { 17720808, 17720809, 17720810 };
		criteria.add(Restrictions.in("id", arrInt));
		HandleList.print(criteria.list());
	}

	@SuppressWarnings("unchecked")
	public void queryInList() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// new int[]错误的
		List<Integer> list = new ArrayList<Integer>();
		list.add(17720808);
		list.add(17720809);
		list.add(17720810);
		criteria.add(Restrictions.in("id", list));
		HandleList.print(criteria.list());
	}

	@SuppressWarnings("unchecked")
	public void queryInSet() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// new int[]错误的
		Set<Integer> set = new TreeSet<Integer>();
		set.add(17720808);
		set.add(17720809);
		set.add(17720810);
		criteria.add(Restrictions.in("id", set));
		HandleList.print(criteria.list());
	}

	@SuppressWarnings("unchecked")
	public void queryInMap() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		Map<String, Integer> map = new HashMap<String, Integer>();
		// String不能命名重复,否者会过滤重复的
		map.put("1", 17720808);
		map.put("2", 17720809);
		map.put("3", 17720810);
		criteria.add(Restrictions.in("id", map.values()));
		HandleList.print(criteria.list());
	}

	@SuppressWarnings("unchecked")
	public void queryIsEmpty() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// Property path [com.happy.entity.AwardNums.issue] does not reference a
		// collection
		criteria.add(Restrictions.isEmpty("issue"));
		HandleList.print(criteria.list());
	}

	@SuppressWarnings("unchecked")
	public void queryIsNotEmpty() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// Property path [com.happy.entity.AwardNums.issue] does not reference a
		// collection
		criteria.add(Restrictions.isNotEmpty("issue"));
		HandleList.print(criteria.list());
	}

	/**
	 * this_.id is null
	 */
	@SuppressWarnings("unchecked")
	public void queryIsNull() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// this_.id is null
		criteria.add(Restrictions.isNull("id"));
		HandleList.print(criteria.list());
	}

	/**
	 * this_.id is not null
	 */
	@SuppressWarnings("unchecked")
	public void queryIsNotNull() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// this_.id is not null
		criteria.add(Restrictions.isNotNull("id"));
		HandleList.print(criteria.list());
	}

	@SuppressWarnings("unchecked")
	public void querySizeEq() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// Unknown collection role: com.happy.entity.AwardNums.id
		criteria.add(Restrictions.sizeEq("id", 15));
		HandleList.print(criteria.list());
	}

	/**
	 * this_.id < 17720812
	 */
	@SuppressWarnings("unchecked")
	public void querySqlRestriction() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		String alias = criteria.getAlias();
		// _很重要的
		criteria.add(Restrictions.sqlRestriction(alias + "_.id < 17720812"));
		HandleList.print(criteria.list());
	}

	/**
	 * 仅需要:{alias}.id即可
	 */
	@SuppressWarnings("unchecked")
	public void querySqlRestrictionEasy() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// {alias}.id
		criteria.add(Restrictions.sqlRestriction("{alias}.id < 17720812"));
		HandleList.print(criteria.list());
	}

	/**
	 * lower(this_.numbers) like lower(?)
	 */
	@SuppressWarnings("unchecked")
	public void querySqlRestrictionType() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// lower(this_.numbers) like lower(?)
		criteria.add(Restrictions
				.sqlRestriction("lower({alias}.numbers) like lower(?)", "%09",
						Hibernate.STRING));
		HandleList.print(criteria.list());
	}

	/**
	 * where 1=1(可组合使用)
	 */
	@SuppressWarnings("unchecked")
	public void queryConjunction() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// 永真情况下查询
		criteria.add(Restrictions.conjunction());
		HandleList.print(criteria.list());
	}

	/**
	 * where 1=1(和conjunction一样还不知区别)
	 */
	@SuppressWarnings("unchecked")
	public void queryDisjunction() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// 永真情况下查询
		criteria.add(Restrictions.disjunction());
		HandleList.print(criteria.list());
	}

	/**
	 * where 1=1(和conjunction一样还不知区别)
	 */
	@SuppressWarnings("unchecked")
	public void queryNaturalId() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// 永真情况下查询
		criteria.add(Restrictions.naturalId());
		HandleList.print(criteria.list());
	}

	@SuppressWarnings("unchecked")
	public void queryCompare() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// this_.id=? eq&&ne this_.id<>?
		criteria.add(Restrictions.eq("id", 17719845));
		// this_.id>=? ge&&le this_.id<=?
		criteria.add(Restrictions.ge("id", 17719845));
		// this_.id>? gt&&lt this_.id<?
		criteria.add(Restrictions.gt("id", 17719845));
		// this_.id<=?
		criteria.add(Restrictions.le("id", 17719845));
		// this_.id<?
		criteria.add(Restrictions.lt("id", 17719845));
		// this_.id<>?
		criteria.add(Restrictions.ne("id", 17719845));
		HandleList.print(criteria.list());
	}

	@SuppressWarnings("unchecked")
	public void queryCompareProperty() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// this_.issue=this_.numbers eq&&ne this_.id<>?
		criteria.add(Restrictions.eqProperty("id", "issue"));
		// this_.id>=this_.issue ge&&le this_.id<=?
		criteria.add(Restrictions.geProperty("id", "issue"));
		// this_.id>this_.issue gt&&lt this_.id<?
		criteria.add(Restrictions.gtProperty("id", "issue"));
		// this_.id<=this_.issue
		criteria.add(Restrictions.leProperty("id", "issue"));
		// this_.id<this_.issue
		criteria.add(Restrictions.ltProperty("id", "issue"));
		// this_.id<>this_.issue
		criteria.add(Restrictions.neProperty("id", "issue"));
		HandleList.print(criteria.list());
	}

	/**
	 * this_.id=? or this_.id=?
	 */
	@SuppressWarnings("unchecked")
	public void queryOr() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// 或者查询
		criteria.add(Restrictions.or(Restrictions.eq("id", 17719845),
				Restrictions.eq("id", 17719846)));
		HandleList.print(criteria.list());
	}

	/**
	 * this_.id=? and this_.issue=?
	 */
	@SuppressWarnings("unchecked")
	public void queryAnd() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// 并且查询
		criteria.add(Restrictions.and(Restrictions.eq("id", 17719845),
				Restrictions.eq("issue", "2011100")));
		HandleList.print(criteria.list());
	}

	/**
	 * not this_.id=?
	 */
	@SuppressWarnings("unchecked")
	public void query() {
		Criteria criteria = getSession().createCriteria(AwardNums.class);
		// 排除查询
		criteria.add(Restrictions.not(Restrictions.eq("id", 17719841)));
		HandleList.print(criteria.list());
	}
}

分享到:
评论
1 楼 小格的冬天 2012-03-14  
  public void queryIsEmpty() { 
        Criteria criteria = getSession().createCriteria(AwardNums.class); 
        // Property path [com.happy.entity.AwardNums.issue] does not reference a 
        // collection 
        criteria.add(Restrictions.isEmpty("issue")); 
        HandleList.print(criteria.list()); 
    }

关于这个的解决方法,楼主有木有答案

相关推荐

    hibernateCriteria查询

    ### Hibernate Criteria 查询详解 #### 一、概述 Hibernate Criteria 查询是一种强大的对象化查询方式,它为开发者提供了一种灵活而直观的方式来构建复杂的查询逻辑。与传统的SQL查询相比,Criteria查询更加面向...

    Hibernate criteria基本操作

    Hibernate Criteria 是一种在Java应用程序中使用Hibernate ORM框架执行SQL查询的方式。它提供了一种面向对象的方式来构建查询,使得代码更加可读和易于维护。Criteria API 提供了多种方法来构建复杂的查询,包括添加...

    Hibernate Criteria 排序的問題

    ### Hibernate Criteria 排序问题详解 #### 一、前言 在使用Hibernate进行数据库操作时,经常需要对查询结果进行排序处理。对于简单的查询场景,使用HQL(Hibernate Query Language)即可轻松实现排序功能;但对于...

    Hibernate的Criteria用法总结

    在Java持久层框架Hibernate中,Criteria API是一种动态构建SQL查询的方法,它允许开发者在运行时构建查询,提供了更面向对象的查询方式。本篇将详细阐述Hibernate Criteria API的使用。 首先,Criteria API由...

    hibernate criteria的使用方法

    ### Hibernate Criteria 使用方法详解 #### 一、简介 Hibernate 是一款非常流行的 Java 持久层框架,它简化了对象关系映射(ORM)过程中的许多复杂性。在 Hibernate 中,Criteria API 提供了一种类型安全的方式来...

    Hibernate Criteria用法大全.docx

    【Hibernate Criteria 用法详解】 Hibernate Criteria API 是一种面向对象的查询方式,它提供了一种比HQL(Hibernate Query Language)更为简洁且直观的查询手段。通过Criteria API,开发者可以构建复杂的查询条件...

    hibernate criteria 分组 排序 关联

    ### Hibernate Criteria 分组、排序与关联查询详解 #### 标题与描述理解 - **标题**:“hibernate criteria 分组 排序 关联”这一标题明确了本文将围绕Hibernate Criteria API进行分组、排序以及关联查询的具体...

    Hibernate Criteria 完全使用

    **Hibernate Criteria 完全使用详解** Hibernate Criteria API 是 Hibernate 框架中一个强大的查询工具,它提供了一种面向对象的方式来构建SQL查询,使得开发者无需直接编写SQL语句,即可进行复杂的数据库操作。...

    hibernate如何使用criteria联合查询 group by 的语句

    这个案例是根据分组查询,并且得到每组的条数,不懂得可以q我:1710086675,欢迎认识更多新朋友

    Criteria hibernate

    **标题:“Criteria Hibernate”** **描述:** 在Java开发中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,使开发者能够用面向对象的方式来处理数据。本篇内容将聚焦于Hibernate中的Criteria查询,...

    Hibernate Criteria

    NULL 博文链接:https://chenlinbo.iteye.com/blog/335677

    Hibernate中Criteria的完整用法

    Hibernate 中 Criteria 的完整用法 Hibernate 的 Criteria 是一种强大且灵活的查询机制,允许开发者根据需求灵活地组装查询条件。Criteria 的设计是基于 CriteriaSpecification 父接口,提供了 Criteria 和 ...

    Hibernate的Criteria用法总结.doc

    Hibernate 的 Criteria 用法总结 Hibernate 的 Criteria 是一个完全面向对象、可扩展的条件查询 API,通过它完全不需要考虑数据库底层如何实现、SQL 语句如何实现。Criteria 提供了灵活的查询条件组装方式,能够...

    Hibernate中,利用Criteria查询容器实现sql的写法

    在Java的持久化框架Hibernate中,Criteria API是一种用于构建动态查询的强大工具,它允许开发者以对象化的方式构建SQL语句,而无需直接编写SQL代码。本篇将详细讲解如何在Hibernate中利用Criteria查询来实现类似SQL...

    hibernateCriteria的使用.docx

    在Java的持久化框架Hibernate中,Criteria API是一种用于构建动态查询的强大工具,它允许开发者以编程方式构建查询,而不是直接写SQL语句。下面将详细解释Criteria API的使用及其相关概念。 1. Query By Example ...

    Hibernate-Criteria_模糊查询

    在深入探讨Hibernate与Criteria结合进行模糊查询之前,我们先来了解一下Hibernate和Criteria的基本概念,以及为何选择使用它们进行模糊查询。 ### Hibernate简介 Hibernate是一个开放源代码的对象关系映射(ORM)...

    Hibernate中Criteria的完整用法.docx

    Hibernate 中 Criteria 的完整用法 Hibernate 中 Criteria 的完整用法是 Hibernate 框架中的一种查询机制,允许开发者灵活地根据查询条件来组装查询语句。在使用 Spring 和 Hibernate 进行开发时,Criteria 的优势...

    Hibernate中Criteria的使用

    Hibernate 中 Criteria 的使用 Hibernate 中 Criteria 的使用是 Hibernate 框架中的一种查询机制,对于研究 Hibernate 源码有一些作用。在查询方法设计上可以灵活地根据 Criteria 的特点来方便地进行查询条件的组装...

Global site tag (gtag.js) - Google Analytics