`
metaphy
  • 浏览: 344100 次
  • 性别: Icon_minigender_1
  • 来自: 大西洋底
社区版块
存档分类
最新评论

从Spring MVC-step-by-step发现的问题(Spring 2.5.2)

阅读更多
Spring2.5.2的MVC-step-by-step教程没有一点问题,按照它的步骤,能够创建一个完整的Spring的Demo.只是,教程里用的数据库是HSQL,当把HSQL换成我本地的MySQL5的时候,出现了问题。

这个异常是在对产品价格update时出现的:
root cause
java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1552)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1519)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1504)
org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:795)
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:588)
org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:789)
org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:812)...


在网上查了一下,说是事务配置的问题,找到教程里面关于事务配置的地方:
    <bean id="transactionManager" 
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <aop:config>
        <aop:advisor pointcut="execution(* *..ProductManager.*(..))" advice-ref="txAdvice"/>
    </aop:config>

    <tx:advice id="txAdvice">
        <tx:attributes>
            <tx:method name="save*"/>
            <tx:method name="*" read-only="true"/>
        </tx:attributes>
    </tx:advice>

对这一部分的解释是:The pointcut applies to any method called on the ProductManager interface. The advice is a transaction advice that applies to methods with a name starting with 'save'. The default transaction attributes of REQUIRED applies since no other attribute was specified. The advice also applies "read-only" transactions on any other methods that are adviced via the pointcut.
大概翻译一下:切面是针对实现ProductManager接口的类的。对以'save'开头的方法的建议是事务建议,因为没有指定属性,所以使用默认的'REQUIRED'属性;对其他方法使用'read-only'事务。
看来,这个配置也没什么问题了;我猜,还是MySql的connector的问题(mysql-connector-java-5.0.8-bin.jar),MySql5在事务方面还是不太稳定。最后,把配置文件中这行<tx:method name="*" read-only="true"/>删除,就没问题了。
2
0
分享到:
评论
1 楼 sherman4223 2008-07-21  
仅删除<tx:method name="*" read-only="true"/>是不够的,save方法没有将increase后的数据保存在数据库里。
        /*
        int count = getSimpleJdbcTemplate().update(
            "update products set price = ? where id = ?",
            new MapSqlParameterSource().addValue("price", prod.getPrice())
                .addValue("id", prod.getId()));
        */
        int count = getSimpleJdbcTemplate().update( "update products set price = ? where id = ?", 
        		prod.getPrice(),prod.getId() );

这样改了就好了

相关推荐

    spring-boot-admin-server-ui-2.5.2-API文档-中文版 (1).zip

    赠送原API文档:spring-boot-admin-server-ui-2.5.2-javadoc.jar; 赠送源代码:spring-boot-admin-server-ui-2.5.2-sources.jar; 赠送Maven依赖信息文件:spring-boot-admin-server-ui-2.5.2.pom; 包含翻译后的...

    spring-boot-admin-server-2.5.2-API文档-中文版.zip

    赠送原API文档:spring-boot-admin-server-2.5.2-javadoc.jar; 赠送源代码:spring-boot-admin-server-2.5.2-sources.jar; 赠送Maven依赖信息文件:spring-boot-admin-server-2.5.2.pom; 包含翻译后的API文档:...

    spring-boot-admin-server-cloud-2.5.2-API文档-中文版.zip

    赠送原API文档:spring-boot-admin-server-cloud-2.5.2-javadoc.jar; 赠送源代码:spring-boot-admin-server-cloud-2.5.2-sources.jar; 赠送Maven依赖信息文件:spring-boot-admin-server-cloud-2.5.2.pom; 包含...

    dex反编译工具 baksmali-2.5.2-.jar smali-2.5.2.jar 2023-11-30 最新

    baksmali-2.5.2-2771eae0-dirty-fat.jarsmali-2.5.2-2771eae0-dirty-fat.jar2023-11-30 最新java -jar .\baksmali-2.5.2-2771eae0-dirty-fat.jar disassemble E:\Temp\mm\my.dexjava -jar .\smali-2.5.2-2771eae0-...

    struts-2.5.2-all所有jar包

    struts2-spring-plugin-2.5.2.jar, struts2-testng-plugin-2.5.2.jar, struts2-tiles-plugin-2.5.2.jar, tiles-api-3.0.5.jar, tiles-autotag-core-runtime-1.1.0.jar, tiles-core-3.0.5.jar, tiles-el-3.0.5.jar, ...

    checker-compat-qual-2.5.2-API文档-中英对照版.zip

    赠送原API文档:checker-compat-qual-2.5.2-javadoc.jar; 赠送源代码:checker-compat-qual-2.5.2-sources.jar; 赠送Maven依赖信息文件:checker-compat-qual-2.5.2.pom; 包含翻译后的API文档:checker-compat-...

    checker-compat-qual-2.5.2-API文档-中文版.zip

    赠送原API文档:checker-compat-qual-2.5.2-javadoc.jar; 赠送源代码:checker-compat-qual-2.5.2-sources.jar; 赠送Maven依赖信息文件:checker-compat-qual-2.5.2.pom; 包含翻译后的API文档:checker-compat-...

    qt-vsaddin-msvc2019-2.5.2-rev.01.vsix

    qt-vsaddin-msvc2019-2.5.2-rev.01.vsix

    spring-aop.jar各个版本

    内容包括: spring-aop-1.1.1.jar ...spring-aop-2.5.2.jar spring-aop-2.5.4.jar spring-aop-2.5.5.jar spring-aop-2.5.6.jar spring-aop-3.0.0.RELEASE.jar spring-aop-3.0.2.RELEASE.jar spring-aop-sources.jar

    spring-context.jar

    spring-context-1.2.8.jar, spring-context-1.2.9.jar, spring-context-2.0-m2.jar, spring-context-2.0.1.jar, spring-context-2.0.2.jar, spring-context-2.0.4.jar, spring-context-2.0.6.jar, spring-context-...

    checker-qual-2.5.2-API文档-中文版.zip

    赠送原API文档:checker-qual-2.5.2-javadoc.jar; 赠送源代码:checker-qual-2.5.2-sources.jar; 赠送Maven依赖信息文件:checker-qual-2.5.2.pom; 包含翻译后的API文档:checker-qual-2.5.2-javadoc-API文档-...

    ksoap2-android-assembly-2.5.2-jar-with-dependencies

    KSOAP2-android-assembly-2.5.2-jar-with-dependencies.jar文件包含了KSOAP2库的所有依赖,开发者可以直接将其导入到Android项目中,无需关心其他依赖问题。这个版本的KSOAP2已经集成了所有必要的组件,方便开发者...

    struts-2.5.2-all.zip

    Struts 2.5.2 是一个非常重要的Java ...总之,"struts-2.5.2-all.zip"是一个完整的Struts 2开发环境,涵盖了从基础功能到高级特性的所有组件,对于Java Web开发者来说,这是一个宝贵的资源,可以加速项目的开发进程。

    ffmpeg-2.5.2-win64-dev.7z

    This is a FFmpeg Win64 shared build by Kyle Schwarz. Zeranoe's FFmpeg Builds Home Page: This build was compiled on: Dec 30 2014, at: 17:29:04 FFmpeg version: 2.5.2 libavutil 54. 15.100 / 54. 15.100 ...

    ffmpeg-2.5.2-win32-static

    这个压缩包 "ffmpeg-2.5.2-win32-static" 包含的是 FFmpeg 的2.5.2版本,专为32位Windows操作系统编译的静态版本。在2.5.2这个版本中,FFmpeg 提供了各种媒体处理功能,包括但不限于转换、合并、分割、剪辑、编码、...

    jython-2.5.2

    jython-2.5.2jython-2.5.2jython-2.5.2jython-2.5.2jython-2.5.2jython-2.5.2jython-2.5.2jython-2.5.2jython-2.5.2jython-2.5.2jython-2.5.2jython-2.5.2jython-2.5.2jython-2.5.2jython-2.5.2jython-2.5.2jython-...

    apktool,baksmali-2.5.2,smali-2.5.2

    标题和描述中提到的"apktool", "baksmali-2.5.2"以及"smali-2.5.2"是安卓应用逆向工程中的关键工具,主要用于APK文件的解包、反编译和打包。这些工具有助于开发者理解APK的内部结构,调试代码,或者进行安全分析。 ...

    dnnl-2.5.2-1.5.7-API文档-中文版.zip

    赠送jar包:dnnl-2.5.2-1.5.7.jar; 赠送原API文档:dnnl-2.5.2-1.5.7-javadoc.jar; 赠送源代码:dnnl-2.5.2-1.5.7-sources.jar; 赠送Maven依赖信息文件:dnnl-2.5.2-1.5.7.pom; 包含翻译后的API文档:dnnl-2.5.2...

    Spring2.5.2-中文参考手册.chm

    6. **MVC框架**:Spring MVC是Spring框架的一部分,用于构建Web应用程序。它提供了模型-视图-控制器架构,分离了业务逻辑、数据和用户界面。 7. **Spring Expression Language (SpEL)**:Spring 2.5引入了SpEL,一...

    pythonnet-2.5.2-cp39-cp39-win_amd64.whl.zip

    python.exe

Global site tag (gtag.js) - Google Analytics