@RequestMapping("live/add")
@Transactional
public void saveCmsLive(HttpServletRequest request, HttpServletResponse response,CmsLive cmsLive,CmsLiveNum cmsLiveNum){
(1).CmsLive live = cmsLiveMng.addCmsLive(cmsLive);
cmsLiveNum.setLiveId(live.getLiveId());
(2).cmsLiveNumMng.addCmsLiveNum(cmsLiveNum);
String message = Constants.API_MESSAGE_SUCCESS;
String code = ResponseCode.API_CODE_CALL_SUCCESS;
String body = "\"\"";
ApiResponse apiResponse = new ApiResponse(request, body, message, code);
ResponseUtils.renderApiJson(response, request, apiResponse);
}如上述代码(标记了(1),(2))我第一句执行成功了 然后第二句执行失败了 然后第一条的数据还是插入了数据库我service层和controller层都加了事务注解,对应的xml文件也有 还是没回滚
在spring-hibernate配置文件中也配置了 <bean id="treeInterceptor" class="org.fqworld.common.hibernate4.TreeIntercptor"/>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean> <bean name="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8" />
</bean>
@Transactional
public void saveCmsLive(HttpServletRequest request, HttpServletResponse response,CmsLive cmsLive,CmsLiveNum cmsLiveNum){
(1).CmsLive live = cmsLiveMng.addCmsLive(cmsLive);
cmsLiveNum.setLiveId(live.getLiveId());
(2).cmsLiveNumMng.addCmsLiveNum(cmsLiveNum);
String message = Constants.API_MESSAGE_SUCCESS;
String code = ResponseCode.API_CODE_CALL_SUCCESS;
String body = "\"\"";
ApiResponse apiResponse = new ApiResponse(request, body, message, code);
ResponseUtils.renderApiJson(response, request, apiResponse);
}如上述代码(标记了(1),(2))我第一句执行成功了 然后第二句执行失败了 然后第一条的数据还是插入了数据库我service层和controller层都加了事务注解,对应的xml文件也有 还是没回滚
在spring-hibernate配置文件中也配置了 <bean id="treeInterceptor" class="org.fqworld.common.hibernate4.TreeIntercptor"/>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean> <bean name="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8" />
</bean>
解决方案 »
- 通过JDBC方式查询数据库生成数据效率低,请问下问题出在什么地方或者有什么解决方案?
- 各位大侠,求调试方法。
- 拍拍网,那个抢购物品的具体流程是什么样的呢???
- 重装jdk,出现问题
- 哪里有JMS的视频教程的
- 高手才请进:一个关于Spring的hibernateTemplate的问题
- 求助:关于在服务器端解压文件的问题
- windows下Tomcat做成服务后启动控制台的问题
- 300分求助!EJB编译问题!!!!!!!!!!!!!!!!!(在线急等!!!!!)
- mybatis的mapper中的if条件比对map参数中的值失败
- SSM/Spring5MVC/Spring5/MyBatis/超详细整合(2)
- SSM中C3P0连接问题求解答
1.新写一个service函数,包含(1)(2)的执行逻辑
2.在这个函数上添加 @Transactional
3.在Controller中调用这个函数
PROPAGATION_REQUIRED 强制使用同一事物
PROPAGATION_REQUIRES_NEW 调用创建新事物,新事物与原事物独立
PROPAGATION_NESTED 一般用于分布式,做最终一致性另外建议:
1. Conroller层完成基本的接口工作,完成数据完整性校验和数据格式转换工作
2. Service层实现事物的处理与实现具体业务逻辑
3. Dao层实现基本是数据逻辑 CRUD,不参与业务逻辑