hibernate数据过滤和监听

动态数据过滤

定义数据过滤器

	<filter-def name="limitItemsByUserRank">
		<filter-param name="currentUserRank"" type="long"/>
	</filter-def>
 
@org.hibernate.annotations.FilterDef(
		name="limitItemsByUserRank",
		parameters=@org.hibernate.annotations.ParamDef(
				name="currentUserRank",type="int"
		))

 应用和实现过滤器

   <filter name="limitItemsByUserRank"
            condition=":currentUserRank >=
                       (select u.RANK from USERS u where u.USER_ID = SELLER_ID)"/>

 

@org.hibernate.annotations.Filter(
    name = "limitItemsByUserRank",
    condition=":currentUserRank >= " +
              "(select u.RANK from USER u" +
              " where u.USER_ID = SELLER_ID)"
)

  启动过滤器

Filter filter = session.enableFilter("limitItemsByUserRank");
filter.setParameter("currentUserRank", loggedInUser.getRanking());
 
List<Item> filteredItems = session.createQuery("from Item").list();
List<Item> filteredItems = session.createCriteria(Item.class).list();

 通过标识符检索和通过对Item实例的导航访问(aCategory.getItems())都没有进行过滤

过滤集合

<class name="Category" table="CATEGORY">
...
<set name="items">
<key column="CATEGORY_ID"/>
<one-to-many class="Item"/>
<filter name="limitItemsByUserRank"
condition=":currentUserRank >=
(select u.RANK from USERS u
 where u.USER_ID = SELLER_ID)"/>
</set>
</class>

  拦截hibernate事件

创建标记接口

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值