大家知道在Hibernate Framework中提供了三种查询数据的方式
Hibernate Query Language (HQL)
它是ANSI SQL的最小OO Dialect例
sessioncreateQuery(fromCategorycwherecnamelikeLaptop%);
entityManagercreateQuery(selectcfromCategorycwherecnamelikeLaptop%);
Criteria query
它是HQL查询的延伸提供了一些高级查询功能例
sessioncreateCriteria(Categoryclass)
add(Restrictionslike(nameLaptop%));
NativeSQLquery:
sessioncreateSQLQuery(
select{c*}fromCATEGORY{c}whereNAMElikeLaptop%
)addEntity(cCategoryclass);
最近我在项目中经常遇到Hibernate数据查询的任务我对一些我遇到的较难的课题举例进行说明
《表述SELECT》
Criteriacrit=sessioncreateCriteria(Userclass)
setProjection(ProjectionsprojectionList()
add(Projectionsproperty(lastname))
add(Projectionsproperty(firstname))
list();
《表述WHERE》
Criteriacrit=sessioncreateCriteria(Userclass)
add(Restrictionseq(email))
uniqueResult();
《表述GROUP》
Criteriacrit=sessioncreateCriteria(Userclass)
setProjection(ProjectionsprojectionList()
add(ProjectionsgroupProperty(lastname))
add(ProjectionsgroupProperty(firstname))
list()
《表述ORDER》
Criteriacrit=sessioncreateCriteria(Userclass)
addOrder(Orderasc(lastname))
addOrder(Orderasc(firstname))
list();
《取TOP 结果》
Criteriacrit=sessioncreateCriteria(Catclass);
setMaxResults()
list();
《分页》
Criteriacrit=sessioncreateCriteria(Catclass)
setFirstResult()
setMaxResults()
list();
《取查询结果》
如果使用select或group必须使用object[]来获得查询结果List值;
如果未使用select或group必须使用javaobject[]来获得查询结果List值;
《涉及组合primary key属性》
Criteriacrit=sessioncreateCriteria(activitylogclass)
add(Restrictseq(comp_idcustIdcustomerid))
add(Restrictsge(createdTsstarttime))
add(Restrictsle(createdTsendtime))
list();
《Foreign Key联合查询》
Criteriacrit=sessioncreateCriteria(activitylogclass)
createAlias(taskCodeRftc)
setProjection(ProjectionsprojectionList()
add(Projectionsproperty(UserId))
add(Projectionsproperty(tctaskdescription))
list();
《Native Query》
SQLQueryquery=sessioncreateSQLQuery(selectactivitylog_seqnextvalassessidfromdual);
QueryaddScalar(sessidHibernateLONG);
Longlong=queryuniqueResult();