继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

ssh(Struts2.5.5+hibernate4.4+spring4.3.4)整合中的问题

小冥王
关注TA
已关注
手记 7
粉丝 25
获赞 212
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>
打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP

热门评论

在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.

我和你配置基本一样!求助如何解决

查看全部评论