2014-12-07 2 views
1

У меня есть запрос Hibernate, который настроен для выполнения с помощью аннотации Spring Data (@Repository). Я хочу, чтобы поймать запрос, прежде чем он будет отправлен в БД, и когда будет выполнено определенное условие, немного измените его.Hibernate и Spring изменить запрос Перед отправкой в ​​DB

Что является лучшим вариантом для этого? Я предпочитаю решение JPA, а не решение Hibernate, , но также будет работать решение Hibernate.

+0

Разместите @Repository код, который выполняет операцию дб. –

+2

справится с этим в слое dao. вам не нужно «ловить» запрос, но строить его с учетом этого конкретного условия. – sergiu

ответ

2

Если вы хотите изменить запрос после подготовленного оператора, вы можете сделать это в Hibernate Interceptor и зарегистрировать его во время настройки Spring DB.

Ваш MyInterceptor должен либо реализовать Hibernate Interceptor.class, либо расширять EmptyInterceptor.class. Метод, который вы ищете:

public String onPrepareStatement(String sql); 

Если вам нужно что-то еще, вы могли бы дать попробовать со слушателями событий, но я не уверен, что есть один для вашего случая.

Вот некоторые документы:

Hibernate 4.0 Interceptors and events How to integrate an Interceptor with Spring

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