spring事务问题 本帖最后由 sunqiusong 于 2011-10-24 11:45:10 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 您好,你没有加事务注解@Transactional 加了,没看到,试试注解改为:<!--使用基于注解方式配置事务 --><tx:annotation-driven transaction-manager="txManager"/> 楼主这个写没啊 <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*" read-only="true" /> <tx:method name="find*" read-only="true" /> <tx:method name="count*" read-only="true" /> <tx:method name="validate*" read-only="true" /> <tx:method name="add*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="save*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="verify*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="clear*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="del*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="resume*" propagation="REQUIRED" rollback-for="Exception" /> </tx:attributes> </tx:advice> 这个有的 <tx:annotation-driven transaction-manager="transactionManager" /> 先看是否有异常。再看下show_sql 有没有sql出来了。 再debug进去看下service对象是不是个代理对象。再debug进代理对象看是否对应到该事务管理器。 没有任何异常,可以肯定的一点是,事务没有提交,对DAO加session.flush()后可以插入数据 哦, 应该是你dao那边没加事务配置的缘故 你在save方法上也加上 @Transactional 应该就行了 这个注解可以不放在DAO层吗?我现在通过下面的方式实现的@Service@Transactionalpublic class CmsSiteMngImpl implements CmsSiteMng{ protected ChannelDao channelDao; protected SiteDao dao; @Autowired public void setChannelDao(ChannelDao channelDao) { this.channelDao = channelDao; } @Autowired public void setDao(SiteDao dao) { this.dao = dao; } public void sayHello() { CmsSiteInfo site = new CmsSiteInfo(); site.setSiteName("oooooqqqq"); dao.save(site); channelDao.test(); CmsChannel channel = new CmsChannel(); channel.setSite(dao.findById("")); channel.setChannelName("1111111"); channelDao.save(channel); } @Transactional(readOnly = true) public CmsSiteInfo findById(String id) { CmsSiteInfo entity = dao.findById(id); return entity; }} request数据丢失问题,挺怪的!! 如何在java web 应用中在线查看编辑word .xls文件 菜鸟跪求,通过servlet访问jdbc把数据库内容显示在网页上,为什么我的网页上什么也没显示,下面是代码 大家帮帮忙jasperreport的问题 js(急啊.....) 怎么监测Tomcat JDBC连接池的使用状态? 求救!!!!!Tomcat抛出异常 紧急请教一个HttpSession处理的问题 -------求网站开发设计规范----------- action类中的service无法注入 struts2 json jpa怎么调用带out参数的存储过程
<tx:annotation-driven transaction-manager="txManager"/>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="find*" read-only="true" />
<tx:method name="count*" read-only="true" />
<tx:method name="validate*" read-only="true" />
<tx:method name="add*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="save*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="update*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="verify*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="clear*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="del*" propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="resume*" propagation="REQUIRED" rollback-for="Exception" />
</tx:attributes>
</tx:advice>
<tx:annotation-driven transaction-manager="transactionManager" />
再看下show_sql 有没有sql出来了。
再debug进去看下service对象是不是个代理对象。
再debug进代理对象看是否对应到该事务管理器。
@Transactional
public class CmsSiteMngImpl implements CmsSiteMng{
protected ChannelDao channelDao;
protected SiteDao dao;
@Autowired
public void setChannelDao(ChannelDao channelDao) {
this.channelDao = channelDao;
}
@Autowired
public void setDao(SiteDao dao) {
this.dao = dao;
}
public void sayHello() {
CmsSiteInfo site = new CmsSiteInfo();
site.setSiteName("oooooqqqq");
dao.save(site);
channelDao.test();
CmsChannel channel = new CmsChannel();
channel.setSite(dao.findById(""));
channel.setChannelName("1111111");
channelDao.save(channel);
}
@Transactional(readOnly = true)
public CmsSiteInfo findById(String id) {
CmsSiteInfo entity = dao.findById(id);
return entity;
}
}