Hibernate4和JPA集成
环境: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,怎么解决呢 建筑商 交易接收器 交易经理 包装会话工厂 实体管理工厂Hibernate4和JPA集成,hibernate,jpa,Hibernate,Jpa,环境:Spring4、Hibernate4、JPA 如果调用BuilderDao.deleteentity,我们会得到 线程主org.springframework.dao.InvalidDataAccessApiUsageException中出现异常:只读模式下不允许执行写入操作FlushMode.MANUAL:将会话转换为FlushMode.COMMIT/AUTO或从事务定义中删除“readOnly”标记。 配置设置如下所示 如果我将事务管理器更改为org.springframework.o
这个能帮你吗?补充
<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>