在spring 管理的hibernate的session时这样调用: getHibernateTemplate().get(entityClass, id) getHibernateTemplate().load(entityClass, id) getHibernateTemplate().find(queryString) //或者 return (Page)template.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = setQueryParameters(session.createQuery(queryXsqlResult.getXsql()),pageRequest); Query countQuery = setQueryParameters(session.createQuery(removeOrders(countQueryXsqlResult .getXsql())),pageRequest); return executeQueryForPage(pageRequest, query, countQuery); } }); 现在问题是我想在spring 打开session时添加一个拦截如: Session session = template.getSessionFactory().openSession(permissionInterceptor); |
|
100分 |
这个你只能去研究源码,然后找到切入点,通过继承啊,等扩展手段解决这个问题
|
这个你不搞源码,没人知道的,又不是常见的问题 |
|
我看了 hibernate的配置项可以做到这一点
(1)定义实现Interceptor接口的拦截器类 (2)通过Session启用拦截器,或者通过Configuration启用全局拦截器 new Configuration().setInterceptor( new AuditInterceptor() ); 但是不知道怎么在配置文件里 配置Configuration他的setInterceptor |
|
<bean id=”sessionFactory” class=”cn.sh.cares.framework.spring.annotationSessionFactoryBean”>
<property name=”dataSource” ref=”ppcDataSource”/> <!–<property name=”lobHandler” ref=”lobHandler”/>–> <property name=”annotatedClassesLocations”> <list> <value>classpath*:</value> </list> </property> <property name=”hbmLocations”> <list> <value>classpath*:</value> </list> </property> <property name=”hibernateProperties”> <props> <prop key=”hibernate.dialect”>cn.sh.cares.framework.dao.hibernate.OracleDialect</prop> <prop key=”hibernate.format_sql”>true</prop> <prop key=”hibernate.show_sql”>true</prop> <prop key=”hibernate.use_sql_comments”>false</prop> <prop key=”hibernate.cache.provider_class”>org.hibernate.cache.EhCacheProvider</prop> <prop key=”hibernate.cache.use_query_cache”>true</prop> <prop key=”hibernate.cache.use_second_level_cache”>true</prop> <prop key=”hibernate.jdbc.batch_size”>20</prop> <prop key=”hibernate.jdbc.fetch_size”>20</prop> </props> </property> <property name=”entityInterceptor”>//找到了这里是。 <bean id =”auditInterceptor” class=”cn.sh.cares.framework.dao.hibernate.AuditInterceptor” /> </property> |