博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据过滤器注解@Filter 如何在hibernate、spring data jpa中调用
阅读量:6181 次
发布时间:2019-06-21

本文共 3005 字,大约阅读时间需要 10 分钟。

hot3.png

实体定义,Shops.java:

package youway.model;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;import org.hibernate.annotations.Filter;import org.hibernate.annotations.FilterDef;import org.hibernate.annotations.Filters;import org.hibernate.annotations.ParamDef;@Entity@Table(name = "shops")@FilterDef(name = "employeeFilter", parameters = { @ParamDef(name = "emplNumber", type = "integer") })@Filters({ @Filter(name = "employeeFilter", condition = ":emplNumber <= employees_number") })public class Shop {	@Id	@GeneratedValue	private Integer id;	/** 店铺名称 */	private String name;	/** 员工编号 */	@Column(name = "employees_number")	private Integer emplNumber;	public Integer getId() {		return id;	}	public void setId(Integer id) {		this.id = id;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public Integer getEmplNumber() {		return emplNumber;	}	public void setEmplNumber(Integer emplNumber) {		this.emplNumber = emplNumber;	}}

其中,

@FilterDef(name = "employeeFilter", parameters = { @ParamDef(name = "emplNumber", type = "integer") })@Filters({ @Filter(name = "employeeFilter", condition = ":emplNumber <= employees_number") })

是要过滤 employees_number (数据库字段名)大于等于指定参数 emplNumber (自定义参数名)的记录

在Hibernate中调用代码片段:

    public List
  findAll(){                Session session = HibernateUtil.getSessionFactory().openSession(); System.out.println("--过滤生效--"); Filter filter = session.enableFilter("employeeFilter"); filter.setParameter("emplNumber", new Integer(24)); session.beginTransaction(); List
 results = session.createQuery("from Shop").list(); for(Shop: results){ System.out.println("店铺名称:"+s.getName()+", 员工编号:"+s.getEmplNumber()); } session.disableFilter("employeeFilter"); session.close(); return results;    }

利用 spring data jpa定义ShopRepository.java:

package youway.repository;import org.springframework.data.jpa.repository.JpaRepository;import youway.model.Shop;public interface ShopRepository extends JpaRepository
 {}

利用 spring data jpa调用:

package youway.service;import java.util.List;import javax.annotation.Resource;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import org.hibernate.Filter;import org.hibernate.Session;import org.springframework.stereotype.Service;@Servicepublic class ShopService{	@PersistenceContext         private EntityManager entityManager;		@Resource	private ShopRepository shopRepository;	@Transactional	public List
 findAll() { Filter filter = (Filter)entityManager.unwrap(Session.class).enableFilter("employeeFilter");               filter.setParameter("emplNumber", new Integer(1000));               List
 lists = shopRepository.findAll();               entityManager.unwrap(Session.class).disableFilter("employeeFilter");        return lists; }}

转载于:https://my.oschina.net/youway/blog/521833

你可能感兴趣的文章
你也许不知道的Vuejs - 最佳实践(3)
查看>>
vue-router中scrollBehavior的妙用
查看>>
RSA 算法和另类攻击方式
查看>>
异步处理方案系列- 1.callback
查看>>
设计模式系列之「中介者模式」
查看>>
复杂Vue组件的异步流程分析
查看>>
帝国CMS内核在线听小说听书网源码
查看>>
iOS自定义控件:自定义TableView、CollectionView空数据占位图
查看>>
资深网易技术专家总结的面试高频知识点!
查看>>
你不知道的JavaScript中的数值转换
查看>>
学习Object.assign
查看>>
重庆网易联合创新中心正式开园,29家重庆企业获网易扶持资源
查看>>
重温数据结构系列--二叉树、堆
查看>>
使用 nodejs 写爬虫(二): 抓取 github 热门项目
查看>>
electron 插件系统设计记录
查看>>
12306查票程序
查看>>
java8 lambda 简介
查看>>
为什么前后端分离了,你比从前更痛苦?
查看>>
Android 一个调用方便的高亮引导库
查看>>
剑指offer 题目3
查看>>