首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >事务回滚在从Controller类调用时不起作用,但在从Test调用时工作

事务回滚在从Controller类调用时不起作用,但在从Test调用时工作
EN

Stack Overflow用户
提问于 2017-12-11 05:58:14
回答 1查看 98关注 0票数 0

首先,我一直在寻找答案,但我仍然找不到答案,即使经过5个小时的搜索。

摘要:当从我的Controller类调用事务类时,它不会回滚,而是在我的JUnit测试类中调用它时执行回滚。

控制器

代码语言:javascript
运行
复制
@RestController
public class NotifyServerController extends BaseController {

...

@RequestMapping(value = PathConstants.PATH_NOTIFY_SERVER, method = RequestMethod.POST)
public WiremoRoot notifyServer(// parameters //) throws SQLException {
    ... authentication and other if statements

    // State monitoring request (control box information)
    else if(content instanceof SpecificRequest){
        response.getContents().setContent(serviceObj.processRequest(request));
    }  else
        throw new InputErrorException();

    return response;
}

}

ServiceObjectImplementation

代码语言:javascript
运行
复制
@Service(// Qualifier //)
@Transactional
public class ServiceClassImplementation implements ServiceClass {

    // -- Dao objects here

    /**
     * {@inheritDoc}
     */
    public Response processRequest(// parameters //) throws SQLException {
        ...
        methodA();
    }

    public void methodA(){
        ...
        throw new RuntimeException();
    }
    ...

}

请注意,当在我的Test类中调用它时,它会成功回滚。它只是在从RestController调用时不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-11 07:36:50

显然,我的tx注释语句在我的db-context.xml中,这就是为什么它不能在实际构建中工作,而是在我的测试类中工作,因为在我的测试类中,我专门加载了我的配置。因此,我将我的tx-注释语句放在我的dispatcherServlet(servlet-context.xml)中,它起了作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47747207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档