2017-01-26 17 views
1

Я работаю с данными весны jpa, и я хотел бы перехватить операции спящего режима, такие как сохранение, удаление или обновление.Перехватчик в данных весны jpa

Я создаю MyInterceptor, который расширяет EmptyInterceptor. Этот класс, скажем, записывает сообщение после сохранения объекта (удалить, отредактировать) на db. Проведите много времени и не смогли добавить к весенним данным jpa

Итак, моя проблема. Где я должен добавить MyInterceptor к весенним данным jpa, чтобы перехватить все объекты.

ссылка ниже показывает, как это сделать в спящем режиме.

http://www.mkyong.com/hibernate/hibernate-interceptor-example-audit-log/

(сценарий) позволяет сказать, что администратор создает элемент в магазине магазине, если товар был успешно сохранен в БД мой перехватчик ловит его и делает что-то.

Любые ссылки, предложения? Заранее спасибо

Я использую Spring загрузки 1.4.3, PostGreSQL 9,5

обновленный

How to use Spring managed Hibernate interceptors in Spring Boot?
Я пытался использовать (ссылка выше) метод, и это дает мне эту ошибку

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [MyInterceptor] as strategy [org.hibernate.Interceptor] 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1589) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1081) ~[spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:856) ~[spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) ~[spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
at com.example.DemoApplication.main(DemoApplication.java:25) [classes/:na] 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111] 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111] 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111] 
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111] 

ответ

0

Incase Вы ищете цель аудита: лучше всего объяснить в spr ИНГ JPA данные документы: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.auditing.configuration

Если вы хотите перехватывать операции JpaRepository: вы можете использовать программирования АОП путем определения аспектов и предоставления советов над операциями JpaRespository pointcut="execution(public * org.springframework.data.jpa.repository.JpaRepository+.*(..))"

Смежные вопросы