文档章节

数据过滤器注解@Filter 如何在hibernate、spring data jpa中调用

youway
 youway
发布于 2015/10/25 17:35
字数 376
阅读 3327
收藏 6

实体定义,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<Shop>  findAll(){
                Session session = HibernateUtil.getSessionFactory().openSession();
		System.out.println("--过滤生效--");
		Filter filter = session.enableFilter("employeeFilter");
		filter.setParameter("emplNumber", new Integer(24));
		session.beginTransaction();
		List<Shop> 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<Shop, Integer> {

}


利用 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;

@Service
public class ShopService{
	@PersistenceContext 
        private EntityManager entityManager;
	
	@Resource
	private ShopRepository shopRepository;

	@Transactional
	public List<Shop> findAll() {
		Filter filter = (Filter)entityManager.unwrap(Session.class).enableFilter("employeeFilter");
               filter.setParameter("emplNumber", new Integer(1000));
               List<Shop> lists = shopRepository.findAll();
               entityManager.unwrap(Session.class).disableFilter("employeeFilter");
	       return lists;
	}
}

© 著作权归作者所有

youway
粉丝 3
博文 44
码字总数 16832
作品 0
程序员
私信 提问
springboot中filter的用法

一、在spring的应用中我们存在两种过滤的用法,一种是拦截器、另外一种当然是过滤器。我们这里介绍过滤器在springboot的用法,在springmvc中的用法基本上一样,只是配置上面有点区别。 二、f...

xiaomin0322
2018/11/14
122
0
springmvc java对象转json,上传下载,拦截器Interceptor以及源码解析

只是写一个<a href = "testJson">测试json</a> 然后再springmvc.xml中开启注解驱动mvc:annotation-driven/ 然后需要印如jackson的三个jar包,jackson是阿里巴巴产品,能够自动将java对象转为......

architect刘源源
06/20
111
0
Servlet 3.0 新特性详解

简介: Servlet 是 Java EE 规范体系的重要组成部分,也是 Java 开发人员必须具备的基础技能,Servlet 3.0 是 Servlet 规范的最新版本。本文主要介绍了 Servlet 3.0 引入的若干重要新特性,包...

红薯
2010/04/23
1K
3
Servlet 3.0 新特性

Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署。其中有几项特性的引入...

壹炮倾城
2013/06/13
171
1
HTTP Status 404 - /Elan_Maven/WEB-INF/jsp/userList.jsp

spring-mvc.xml text/html;charset=UTF-8 web.xml Archetype Created Web Application /index.jsp contextConfigLocation classpath:applicationContext.xml org.springframework.web.contex......

习惯步行
2016/11/14
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
今天
5
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
今天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
今天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
今天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部