[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]