java

位置:IT落伍者 >> java >> 浏览文章

Hibernate高级查询实战


发布日期:2022年06月07日
 
Hibernate高级查询实战

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

               

上一篇:参加4月4日Ben Wang的JBoss讲座纪实

下一篇:演示Struts2实现简单上传代码