Hibernate4和JPA集成

Hibernate4和JPA集成,hibernate,jpa,Hibernate,Jpa,环境:Spring4、Hibernate4、JPA 如果调用BuilderDao.deleteentity,我们会得到 线程主org.springframework.dao.InvalidDataAccessApiUsageException中出现异常:只读模式下不允许执行写入操作FlushMode.MANUAL:将会话转换为FlushMode.COMMIT/AUTO或从事务定义中删除“readOnly”标记。 配置设置如下所示 如果我将事务管理器更改为org.springframework.o

环境:Spring4、Hibernate4、JPA

如果调用BuilderDao.deleteentity,我们会得到 线程主org.springframework.dao.InvalidDataAccessApiUsageException中出现异常:只读模式下不允许执行写入操作FlushMode.MANUAL:将会话转换为FlushMode.COMMIT/AUTO或从事务定义中删除“readOnly”标记。 配置设置如下所示

如果我将事务管理器更改为org.springframework.orm.hibernate4.HibernateTransactionManager,并将sessionFactory更改为org.springframework.orm.hibernate4.LocalSessionFactoryBean,那么一切都很好

我想用JPA,怎么解决呢

建筑商

交易接收器

交易经理

包装会话工厂

实体管理工厂


这个能帮你吗?补充

<bean id="builder" class="org.springframework.aop.framework.ProxyFactoryBean"> 
    <property name="interceptorNames"> 
        <value>transactionInterceptor,builderAOP</value> 
    </property> 
</bean> 
<bean id="builderAOP" class="my.aop.BuilderImp">
    <property name="corporateDao" ref="corporateEventDao"/>
</bean>
<bean id="corporateEventDao" class="my.jdbc.JdbcDaoImpl">
    <property name="dataSource" ref="dataSource"/>
    <property name="hibernateTemplate"><ref bean="hibernateTemplate"/></property>
</bean>

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
    <property name="sessionFactory">
        <ref bean="sessionFactory" />
    </property>
</bean> 
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> 
<property name="transactionManager"> 
    <ref bean="transactionManager"/> 
</property> 
<property name="transactionAttributes">
    <props>
        <prop key="save*">PROPAGATION_REQUIRED</prop>
        <prop key="update*">PROPAGATION_REQUIRED</prop>
        <prop key="delete*">PROPAGATION_REQUIRED</prop>
    </props>    
</property></bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<bean id="sessionFactory" factory-bean="entityManagerFactory" factory-method="getSessionFactory" />
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingResources">
<list>
   <value>xxxx.hbm.xml</value>
</list>
</property>
<property name="jpaVendorAdapter">
   <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
<property name="jpaProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">false</prop>
            <prop key="hibernate.format_sql">false</prop>
            <prop key="hibernate.connection.useUnicode">true</prop>
            <prop key="hibernate.connection.characterEncoding">UTF-8</prop>
            <prop key="hibernate.jdbc.batch_size">1000</prop>          
            <prop key="hibernate.jdbc.fetch_size">100</prop>  
            <prop key="use_streams_for_binary">true</prop>     
            <prop key="hibernate.connection.autoReconnect">true</prop>
        </props>
    </property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="save*" propagation="REQUIRED"/>
        <tx:method name="update*" propagation="REQUIRED"/>
        <tx:method name="delete*" propagation="REQUIRED"/>
        <tx:method name="batchSave*" propagation="REQUIRED"/>
        <tx:method name="batchDelete*" propagation="REQUIRED"/>
        <tx:method name="get*" propagation="REQUIRED" read-only="true"/>
        <tx:method name="find*" propagation="REQUIRED" read-only="true"/>
        <tx:method name="list*" propagation="REQUIRED" read-only="true"/>
        <tx:method name="query*" propagation="REQUIRED" read-only="true"/>
        <tx:method name="page*" propagation="REQUIRED" read-only="true"/>
        <tx:method name="*" propagation="REQUIRED"/>
    </tx:attributes>
</tx:advice>