如何回滚具有捕获的异常的事务?

时间:2019-04-02 18:58:39

标签: java jpa jta

我有一个Rest API,我想捕获所有异常,以便在引发某些错误时向客户端发送自定义消息。

我用try {...} catch(Exception e){...}捕获了异常,但是在这些模式下,回滚不执行,并且数据得以保留。

@POST
@Transactional
public Response add(Foo foo) {
    try {
        Foo add = this.service.add(foo);

        return Response.status(CREATED)
                .entity(add)
                .build();
    } catch (Exception e) {
        return Response.status(BAD_REQUEST)
                .entity("Contact the support! Error: " + e.getMessage())
                .build();
    }
}

我想回滚事务,因为数据不正确。

1 个答案:

答案 0 :(得分:0)

在使用@Transactional时已经解决了。您不必自己进行回滚(有点像try-with-resources)。在finally的{​​{1}}子句中显式使用Transaction时,您将必须回滚事务。