大家知道在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