Заявка за промяна на Hibernate и Spring преди изпращане в DB

Имам заявка за Hibernate, която е конфигурирана да се изпълнява с анотация на Spring Data (@Repository). Искам да хвана заявката, преди да бъде изпратена до DB и когато е изпълнено конкретно условие, да я променя малко.

Какъв е най-добрият вариант за това? Предпочитам решение JPA, а не решение за хибернация, но решението за хибернация също ще работи.


person Yuval Zilberstein    schedule 07.12.2014    source източник
comment
Публикувайте своя @Repository код, който изпълнява db операцията.   -  person Andy Dufresne    schedule 08.12.2014
comment
справете се с това във вашия dao слой. не е нужно да „хванете“ заявката, а да я изградите, като вземете предвид това специфично условие.   -  person sergiu    schedule 08.12.2014


Отговори (1)


Ако искате да промените заявката след подготвения израз, можете да го направите в Hibernate Interceptor и да я регистрирате по време на Spring DB Configuration.

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

public String onPrepareStatement(String sql);

Ако имате нужда от нещо повече, можете да опитате със слушателите на събития, но не съм сигурен, че има такъв за вашия случай.

Ето малко документация:

Hibernate 4.0 Прехващачи и събития Как да интегрирам Interceptor с Spring

person R.Litto    schedule 25.03.2015
comment
това е отхвърлено, вижте също stackoverflow .com/questions/39112308/ - person Alex R; 05.06.2019
comment
Благодаря, добре е да знаете, че внедрих по-добър механизъм в Hybernate 5 - person R.Litto; 12.08.2019