添加一个同时也是Spring
Bean的Hibernate拦截器并没有特别简单的方法,但是如果完全由Hibernate进行管理,则可以轻松添加一个拦截器。为此,将以下内容添加到您的
application.properties:
spring.jpa.properties.hibernate.ejb.interceptor=my.package.MyInterceptorClassName
如果您还需要Interceptor成为bean,则可以创建自己的
LocalContainerEntityManagerFactoryBean。在
EntityManagerFactoryBuilder从spring引导1.1.4是有点过于严格,以与一般的属性,所以你需要转换为中
(Map),我们将看到固定,对1.2。
@Beanpublic LocalContainerEntityManagerFactoryBean entityManagerFactory( EntityManagerFactoryBuilder factory, DataSource dataSource, JpaProperties properties) { Map<String, Object> jpaProperties = new HashMap<String, Object>(); jpaProperties.putAll(properties.getHibernateProperties(dataSource)); jpaProperties.put("hibernate.ejb.interceptor", hibernateInterceptor()); return factory.dataSource(dataSource).packages("sample.data.jpa") .properties((Map) jpaProperties).build();}@Beanpublic EmptyInterceptor hibernateInterceptor() { return new EmptyInterceptor() { @Override public boolean onLoad(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) { System.out.println("Loaded " + id); return false; } };}


