如何使用jdbi和dropwizard使用@Transaction实现提交和回滚

how to achieve commit and rollback using @Transaction using jdbi and dropwizard

我试图找到一个正确的例子来说明如何在 JDBI 和 Dropwizard 中处理@transaction。我的代码看起来像这样

DAO:

public abstract class DoStuff{
@SqlQuery("select qyery")
public abstract List<Confirmchemtemp> getAllconfirm(parameters);

@GetGeneratedKeys
@SqlUpdate("insert query")
protected abstract int insert(parameters);  

@GetGeneratedKeys
@SqlUpdate("insert query")
protected abstract int insertTrans(parameters); 

@GetGeneratedKeys
@SqlUpdate("insert query")
protected abstract int insertTransdet(parameters);

@SqlUpdate("update query")
protected abstract int update(parameters);

@Transaction
public String doStuff(){
    List<Confirmchemtemp> list = getAllconfirm();
    insert(parameters);
    insertTrans(parameters);
    insertTransdet(parameters);
    update(parameters); 
 }
 }



 RESOURCES:

 @Path("/getconfirm")
 @POST
 public String doStuff(){       
  return ddd.doStuff();
  }

但回滚没有发生。谁能告诉我我的代码做错了什么???并且正在使用 config.yml 进行数据库配置。

尝试抛出一个org.skife.jdbi.v2.exceptions.TransactionException。例如,如果你想检查 insert 返回一个不同于 0 的整数,你可以这样做:

@Transaction
public String doStuff() {
    List<Confirmchemtemp> list = getAllconfirm();
    int key = insert(parameters);
    if (key == 0) {
        throw new TransactionException("nothing inserted");
    }
    insertTrans(parameters);
    insertTransdet(parameters);
    update(parameters); 
}