diff --git a/spring-orm/src/main/java/org/springframework/orm/hibernate5/HibernateTemplate.java b/spring-orm/src/main/java/org/springframework/orm/hibernate5/HibernateTemplate.java index 51ef7fd4620b..96f1443a16ae 100644 --- a/spring-orm/src/main/java/org/springframework/orm/hibernate5/HibernateTemplate.java +++ b/spring-orm/src/main/java/org/springframework/orm/hibernate5/HibernateTemplate.java @@ -163,7 +163,7 @@ protected final SessionFactory obtainSessionFactory() { * operation and correspondingly disabled at the end of the operation. * This will work for newly opened Sessions as well as for existing * Sessions (for example, within a transaction). - * @see #enableFilters(Session) + * @see #applyFilters(Session, boolean) * @see Session#enableFilter(String) */ public void setFilterNames(@Nullable String... filterNames) { @@ -360,7 +360,7 @@ protected T doExecute(HibernateCallback action, boolean enforceNativeSess } try { - enableFilters(session); + applyFilters(session, true); Session sessionToExpose = (enforceNativeSession || isExposeNativeSession() ? session : createSessionProxy(session)); return action.doInHibernate(sessionToExpose); @@ -383,7 +383,7 @@ protected T doExecute(HibernateCallback action, boolean enforceNativeSess SessionFactoryUtils.closeSession(session); } else { - disableFilters(session); + applyFilters(session, false); } } } @@ -404,31 +404,25 @@ protected Session createSessionProxy(Session session) { } /** - * Enable the specified filters on the given Session. + * Apply the specified filters on the given Session. + * This method can enable or disable the specified filters based on the 'enable' parameter. + * * @param session the current Hibernate Session + * @param enable true to enable filters, false to disable filters * @see #setFilterNames * @see Session#enableFilter(String) - */ - protected void enableFilters(Session session) { - String[] filterNames = getFilterNames(); - if (filterNames != null) { - for (String filterName : filterNames) { - session.enableFilter(filterName); - } - } - } - - /** - * Disable the specified filters on the given Session. - * @param session the current Hibernate Session - * @see #setFilterNames * @see Session#disableFilter(String) */ - protected void disableFilters(Session session) { + protected void applyFilters(Session session, boolean enable) { String[] filterNames = getFilterNames(); if (filterNames != null) { for (String filterName : filterNames) { - session.disableFilter(filterName); + if (enable) { + session.enableFilter(filterName); + } + else { + session.disableFilter(filterName); + } } } }