城市獵人

          在一網情深的日子里,誰能說得清是苦是甜,只知道確定了就義無反顧
          posts - 1, comments - 7, trackbacks - 0, articles - 89

          Hibernate三種查詢方式

          Posted on 2009-01-12 17:54 sailor 閱讀(1018) 評論(0)  編輯  收藏 所屬分類: Hibernate
              大家知道,在Hibernate Framework中,提供了三種查詢數據的方式:

              1.Hibernate Query Language (HQL):

              它是ANSI SQL的最小OO Dialect,例:

          session.createQuery("from Category c where c.name like 'Laptop%'");
                               entityManager.createQuery("select c from Category c where c.name like 'Laptop%'");

              2.Criteria query :

              它是HQL查詢的延伸,提供了一些高級查詢功能例:

          session.createCriteria(Category.class)
                          .add( Restrictions.like("name", "Laptop%") );

              3.Native SQL query :

          session.createSQLQuery(
          "select {c.*} from CATEGORY {c} where NAME like 'Laptop%'"
          ).addEntity("c", Category.class);

              最近,我在項目中經常遇到Hibernate數據查詢的任務,我對一些我遇到的較難的課題舉例進行說明:

              《表述SELECT》

          Criteria crit = session.createCriteria(User.class)
          .setProjection( Projections.projectionList()
          .add( Projections.property("lastname"))
          .add( Projections.property("firstname"))
          .list();

              《表述WHERE》

          Criteria crit = session.createCriteria(User.class)
          .add(Restrictions.eq("email", "foo@hibernate.org"))
          .uniqueResult();

              《表述GROUP》

          Criteria crit = session.createCriteria(User.class)
          .setProjection( Projections.projectionList()
          .add( Projections.groupProperty("lastname"))
          .add( Projections.groupProperty("firstname"))
          .list()

              《表述ORDER》

          Criteria crit = session.createCriteria(User.class)
          .addOrder( Order.asc("lastname") )
          .addOrder( Order.asc("firstname") )
          .list();

              《取TOP 5結果》:

          Criteria crit = session.createCriteria(Cat.class);
          .setMaxResults(5)
          .list();

              《分頁》:

          Criteria crit = session.createCriteria(Cat.class)
          .setFirstResult(1)
          .setMaxResults(50)
          .list();

              《取查詢結果》:

          如果使用select或group,必須使用object[]來獲得查詢結果List值;
          如果未使用select或group,必須使用java object[]來獲得查詢結果List值;

              《涉及組合primary key屬性》:

          Criteria crit = session.createCriteria(activitylog.class)
          .add( Restricts.eq(“comp_id.custId”,customerid0) )
          .add( Restricts.ge(“createdTs”, starttime) )
          .add( Restricts.le(“createdTs”, endtime ) )
          .list();

              《Foreign Key聯合查詢》:

          Criteria crit = session.createCriteria(activitylog.class)
          .createAlias( “taskCodeRf”, “tc” )
          .setProjection( Projections.projectionList()
          .add( Projections.property("UserId"))
          .add( Projections.property("tc.taskdescription"))
          .list();

              《Native Query》:

          SQLQuery query = session.createSQLQuery(“select  activitylog_seq.nextval as sessid from dual”);
          Query.addScalar(“sessid”,Hibernate.LONG);
          Long long0 = query.uniqueResult();



          來源:http://www.99java.com/article/34/200812/200812171145.html

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 塔河县| 眉山市| 静海县| 客服| 墨竹工卡县| 抚顺市| 绿春县| 西贡区| 武胜县| 环江| 临安市| 咸宁市| 积石山| 西贡区| 屏东市| 清涧县| 志丹县| 合水县| 延川县| 龙门县| 沾化县| 遂川县| 土默特右旗| 正安县| 无棣县| 会泽县| 襄城县| 石家庄市| 石河子市| 当阳市| 两当县| 宁远县| 敖汉旗| 新蔡县| 东光县| 黄冈市| 湖南省| 衡山县| 普兰县| 兴隆县| 青田县|