Hibernate的数据过滤查询Word下载.docx

上传人:b****5 文档编号:19712907 上传时间:2023-01-09 格式:DOCX 页数:5 大小:16.44KB
下载 相关 举报
Hibernate的数据过滤查询Word下载.docx_第1页
第1页 / 共5页
Hibernate的数据过滤查询Word下载.docx_第2页
第2页 / 共5页
Hibernate的数据过滤查询Word下载.docx_第3页
第3页 / 共5页
Hibernate的数据过滤查询Word下载.docx_第4页
第4页 / 共5页
Hibernate的数据过滤查询Word下载.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Hibernate的数据过滤查询Word下载.docx

《Hibernate的数据过滤查询Word下载.docx》由会员分享,可在线阅读,更多相关《Hibernate的数据过滤查询Word下载.docx(5页珍藏版)》请在冰豆网上搜索。

Hibernate的数据过滤查询Word下载.docx

filter-def元素用于定义一个过滤器,filter则将指定的过滤器应用到指定的持久化类。

一个持久化类或集合可以使用多个过滤器,而一个过滤器也可以作用于多个持久化类或集合。

看下面的映射文件示例:

<

?

xmlversion="

1.0"

>

!

--Hibernate配置文件的文件头,包含DTD等信息-->

DOCTYPEhibernate-mapping

 

PUBLIC"

-//Hibernate/HibernateMappingDTD3.0//EN"

"

--Hibernate配置文件的根元素-->

hibernate-mapping>

<

--每个class元素定义一个持久化类-->

classname="

Category"

table="

category"

--定义标识属性-->

 

idname="

id"

column="

category_id"

>

--指定主键生成器策略-->

generatorclass="

native"

/>

/id>

--映射name属性-->

propertyname="

name"

type="

string"

--映射effectiveStartDate属性-->

effectiveStartDate"

eff_start_date"

java.util.Date"

--映射effectiveEndDate属性-->

effectiveEndDate"

eff_end_date"

--映射N-N关联属性-->

setcascade="

none"

inverse="

true"

name="

products"

product_category"

--定义关联属性的key,对应连接表中的外键列-->

keycolumn="

--定义关联属性-->

many-to-manycolumn="

product_id"

class="

Product"

/set>

--使用过滤器,并设置过滤器条件-->

filtername="

effectiveDate"

condition="

:

asOfDateBETWEEN

eff_start_dateandeff_end_date"

/class>

--定义第二个持久化类-->

product"

--映射stockNumber属性-->

stockNumber"

stock_number"

int"

all"

categories"

fetch="

join"

--对关联属性使用第一个过滤器-->

asOfDateBETWEENeff_start_dateand

eff_end_date"

--对关联属性使用第二个过滤器-->

category_id=:

catId"

/many-to-many>

eff_start_dateANDeff_end_date"

--定义第一个过滤器,该过滤器包含一个date类型的参数-->

filter-defname="

filter-paramname="

asOfDate"

date"

/filter-def>

--定义第二个过滤器,该过滤器包含一个long类型的参数-->

long"

/hibernate-mapping>

在上面的配置文件中,定义了两个过滤器,过滤器的定义通过filter-def元素完成。

定义过滤器时,只需要指定过滤器的名字,以及过滤器的参数即可。

如Java里的一个方法声明,只有方法名和参数列表,具体的方法实现是没有的。

过滤器的过滤条件是使用过滤器时才确定的,使用过滤器通过filter元素确定,filter的condition属性用于确定过滤条件,满足该条件的记录才会被抓取到。

系统默认不启用过滤器,必须显式通过enableFilter(StringfilterName)才可以启用过滤器,该方法返回一个Filter实例,Filter包含setParameter方法用于为过滤器参数赋值。

一旦启用了过滤器,过滤器在整个Session内有效,所有的数据加载将自动应用该过滤条件,直到调用disableFilter方法。

看下面的使用过滤器的示例代码:

privatevoidtest()throwsException

{

//获取HibernateSession对象

Sessionsession=HibernateUtil.currentSession();

//开始事务

Transactiontx=session.beginTransaction();

//启用第一个过滤器

session.enableFilter("

//为过滤器设置参数

.setParameter("

newDate());

//启动第二个过滤器

newLong

(2));

//执行查询,该查询没有任何的查询条件

Iteratorresults=session.createQuery("

fromProductasp"

.iterate();

//遍历结果集

while(results.hasNext())

{

Productp=(Product)results.next();

System.out.println(p.getName());

//此处获取Product关联的种类,过滤器也将自动应用过滤

Iteratorit=p.getCategories().iterator();

System.out.println(p.getCategories().size());

while(it.hasNext())

Categoryc=(Category)it.next();

System.out.println(c.getName());

}

mit();

HibernateUtil.closeSession();

}

通过使用过滤器定义常用的数据筛选规则,如果是临时的数据筛选,还是使用常规查询比较好。

对于从前使用行列表达式视图的地方,此处可以考虑使用过滤器。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1