城市獵人

          在一網情深的日子里,誰能說得清是苦是甜,只知道確定了就義無反顧
          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

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


          網站導航:
           
          主站蜘蛛池模板: 区。| 辽阳市| 广宁县| 太保市| 绩溪县| 宁蒗| 会同县| 探索| 桐乡市| 云梦县| 奉化市| 石首市| 景洪市| 山东| 外汇| 呼和浩特市| 西宁市| 高清| 琼结县| 都兰县| 皋兰县| 灵台县| 乌鲁木齐县| 全南县| 苏尼特左旗| 房产| 融水| 惠来县| 平遥县| 三亚市| 永修县| 定结县| 南昌县| 静宁县| 友谊县| 邵阳县| 伊通| 龙江县| 中山市| 江华| 广灵县|