熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Hibernate高級查詢實戰

2013-11-23 20:30:18  來源: Java開源技術 

  大家知道在Hibernate Framework中提供了三種查詢數據的方式

  Hibernate Query Language (HQL)

  它是ANSI SQL的最小OO Dialect

   sessioncreateQuery(from Category c where cname like Laptop%);
                     entityManagercreateQuery(select c from Category c where cname like Laptop%);

  Criteria query

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

   sessioncreateCriteria(Categoryclass)
                add( Restrictionslike(name Laptop%) );

  Native SQL query :

   sessioncreateSQLQuery(
select {c*} from CATEGORY {c} where NAME like Laptop%
)addEntity(c Categoryclass);

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

  《表述SELECT》

   Criteria crit = sessioncreateCriteria(Userclass)
setProjection( ProjectionsprojectionList()
add( Projectionsproperty(lastname))
add( Projectionsproperty(firstname))
list();

  《表述WHERE》

   Criteria crit = sessioncreateCriteria(Userclass)
add(Restrictionseq(email ))
uniqueResult();

  《表述GROUP》

   Criteria crit = sessioncreateCriteria(Userclass)
setProjection( ProjectionsprojectionList()
add( ProjectionsgroupProperty(lastname))
add( ProjectionsgroupProperty(firstname))
list()

  《表述ORDER》

   Criteria crit = sessioncreateCriteria(Userclass)
addOrder( Orderasc(lastname) )
addOrder( Orderasc(firstname) )
list();

  《取TOP 結果》

   Criteria crit = sessioncreateCriteria(Catclass);
setMaxResults()
list();

  《分頁》

   Criteria crit = sessioncreateCriteria(Catclass)
setFirstResult()
setMaxResults()
list();

  《取查詢結果》

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

  《涉及組合primary key屬性》

   Criteria crit = sessioncreateCriteria(activitylogclass)
add( Restrictseq(comp_idcustIdcustomerid) )
add( Restrictsge(createdTs starttime) )
add( Restrictsle(createdTs endtime ) )
list();

  《Foreign Key聯合查詢》

   Criteria crit = sessioncreateCriteria(activitylogclass)
createAlias( taskCodeRf tc )
setProjection( ProjectionsprojectionList()
add( Projectionsproperty(UserId))
add( Projectionsproperty(tctaskdescription))
list();

  《Native Query》

   SQLQuery query = sessioncreateSQLQuery(select  activitylog_seqnextval as sessid from dual);
QueryaddScalar(sessidHibernateLONG);
Long long = queryuniqueResult();


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28583.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.