org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
是因为在sevice中没有加入@Transactional注解,加入后会自动引入
import org.springframework.transaction.annotation.Transactional;
Spring配置
<!-- 创建连接池 -->
<!-- 引入外部的jdbc属性文件 -->
<!-- 连接池 -->
<!-- 配置hibernate 3个步骤 -->
<!-- 注入连接池 -->
<!-- 配置hibernate属性 -->
<!-- 加载hibernate映射文件 -->
<!-- 配置事务管理 -->
<!-- 开启事务注解 -->
<!-- action类(控制层类) -->
<!-- service类(业务逻辑类) -->
<!-- Dao类(数据访问层) -->
<!-- 引入外部的属性文件 -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<!-- 配置hibernate -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!-- 注入连接池 -->
<property name="dataSource" ref="dataSource" />
<!-- 配置hibernate属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<!-- 加载hibernate映射文件 -->
<property name="mappingResources">
<list>
<value>com/ming/domain/Product.hbm.xml</value>
</list>
</property>
</bean>
<!-- 配置事务管理 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 开启事务注解 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- action类 -->
<bean id="action" class="com.ming.action.ProductAction" scope="prototype">
<property name="productService" ref="productService"></property>
</bean>
<!-- service类(业务逻辑类) -->
<bean id="productService" class="com.ming.service.ProductService">
<property name="productDao" ref="productDao"></property>
</bean>
<!-- Dao类(数据访问层) -->
<bean id="productDao" class="com.ming.dao.ProductDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
热门评论
在Dao层加@EnableTransactionManagement
在service层添加@Transactional(readOnly=true)
struts2.3.32 + spring 4.1.2 + hibernate 4.3.11 出现 InvalidDataAccessApiUsageException:Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
我和你配置基本一样!求助如何解决