0
环境:春天4,休眠4,JPA休眠4和JPA集成
如果调用BuilderDao.delete(实体),我们得到线索 异常 “主要” org.springframework.dao.InvalidDataAccessApiUsageException:写操作不允许在只读模式(FlushMode.MANUAL):将您的会话变为FlushMode.COMMIT/AUTO或从交易定义中删除'只读'标记。 的配置如果我改变事务管理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>
transactionInterceptor
<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>
transactionManager的
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
包裹SessionFactory的
<bean id="sessionFactory" factory-bean="entityManagerFactory" factory-method="getSessionFactory" />
的entityManagerFactory
<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>