开发者社区> 问答> 正文

hibernate jpa 拦截器的使用

项目使用的是sping集成hibernate想拦截sql语句的执行,额外增加一些业务逻辑更改执行的sql语句,

了解到hibernate有拦截器可以使用,但是看了现项目的配置,是使用了jpa,配置如下

<bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="eshop_db" />
        <property name="dataSource" ref="dataSource"></property>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="database" value="MYSQL"></property>
                <property name="showSql" value="true"></property>
            </bean>
        </property>
    </bean>

拦截器应该怎么配置?
查找的资料直接使用hibernate是

 <property name="entityInterceptor">   
            <ref bean="sqlIntercept"/>  
        </property>  

就可以了,但这里没有此属性可以设置。

展开
收起
爵霸 2016-03-03 17:28:28 4605 0
1 条回答
写回答
取消 提交回答
  • 在 jpaProperties 中增加属性 hibernate.ejb.interceptor 如下:

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <property name="persistenceProvider" ref="persistenceProvider"/>
            <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter"/>
            <property name="packagesToScan" value="${jpa.scan.package}"/>
            <property name="jpaProperties">
                <props>
                    <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
                    <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
                    <!-- 公共字段处理拦截器 -->
                    <prop key="hibernate.ejb.interceptor">com.elves.api.orm.CommonFieldInterceptor</prop>
                </props>
            </property>
        </bean>
    2019-07-17 18:51:43
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载