我知道这个问题听起来很奇怪,但推理很简单。 我是使用Spring + Hibernate开发的服务器端应用程序。
我是一个自定义servlet:
@Transactional
@Component
public class ReceivingSms implements HttpRequestHandler {
...
...
...
@Override
public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
....reading data from parameters and store into the db....
entityManager.persist(someEntities);
//at some point I found that there is some error and I've to rollback the entire transaction
if(error){
//HERE I WANT TO SAVE A LOG ON DB
throw new RuntimeException("Error");
}
}
原因是:
从这里我的问题:有一种方法可以在db中存储实体并回滚其余的事务吗?
由于
答案 0 :(得分:2)
调用另一个事务服务,其方法使用
注释@Transactional(propagation = Propagation.REQUIRES_NEW)
保存日志条目。