如何回滚捕获异常的事务?
How to rollback a transaction with a catched exception?
我有休息时间 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();
}
}
数据不正确,想回滚交易
当您使用 @Transactional
时,它已经处理好了。您不必自己进行回滚(这有点像 try-with-resources)。在 try
.
的 finally
子句中显式使用 Transaction 时,您将不得不回滚事务
我有休息时间 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();
}
}
数据不正确,想回滚交易
当您使用 @Transactional
时,它已经处理好了。您不必自己进行回滚(这有点像 try-with-resources)。在 try
.
finally
子句中显式使用 Transaction 时,您将不得不回滚事务