Hibernate distinct 查询的多种实现方式

Hibernate distinct 查询的多种实现方式


这里只是简单的写两个方式。
一个是使用Criteria
一个是使用HQL Query

一:Criteria (下面的代码用不上事务的处理,代码片段中的事务只是一个为了保证事务的完整性而使用的一个标准格式化的代码片段。为了保持风格的统一,对于查询片段也使用了事务处理格式。虽然Spring本身提供了事务管理,但是对于简单事务来讲,直接处理的效率比较高,可读性与可控性也强一些。)

    getHibernateTemplate().execute(
        new HibernateCallback() {
            public Object doInHibernate(Session session)
                throws HibernateException, SQLException {

                Object ret = null;

                Transaction tx = session.beginTransaction();
                try {

                    Criteria crit = session.createCriteria(Diary.class);
                    //  这行将对occasion进行唯一性合并
                   crit.setProjection( Projections.distinct(Projections.property("occasion")));
                    crit.createAlias("mission", "mission", Criteria.LEFT_JOIN);
                    crit.addOrder(Order.asc("occasion"));
                    ret = crit.list();

                    tx.commit();
                } catch (Exception e) {
                    if (null != tx) {
                        tx.rollback();
                    }
              

你可能感兴趣的:(Hibernate)