weixin_42299907 2009-02-05 16:47
浏览 283
已采纳

spring service的事务配置问题

[color=blue]问题描述:
一个简单的功能(类似用户登录),我在service层写一个方法isXXExist(final XX xx),要求用户填写的信息不能和数据库中的已有信息重复(类似用户的ID)。可是在用户写了新的数据并提交后(注:一个已存在的数据),提示数据重复,返回到原来界面,但是数据被更新,出现了重复数据。
问题的解决:
打开log4j的数据项,查看tomocat的报错信息。页面返回前,系统自动做了一次update操作,将脏数据保存进数据库。
在applicationContext-service.xml文件中原配置如下:

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

加入<tx:method name="is*" read-only="true"/> 后,程序正常

请问:虽然我找到了原因,但是还是不太理解,请指点下,给我讲下详细的原因。
[/color]

  • 写回答

1条回答 默认 最新

  • mackhong 2009-02-06 09:39
    关注

    applicationContext-service.xml里面配置的是spring2.0以上版本的声明事务管理。
    你的程序应该是调用声明式事务。

    就是将事务处理的级别设置为只读,也就是说仅能从读取,不能进行写的操作。

    所以你的数据被提交之后,已经不会写入了 :D

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!