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

时间:2018-07-25 06:39:13

标签: java dropwizard jdbi

我试图获得有关如何在JDBI和Dropwizard中处理@transaction的正确示例。 Mycode看起来像这样

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进行数据库配置。

1 个答案:

答案 0 :(得分:0)

尝试抛出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); 
}