我试图获得有关如何在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进行数据库配置。
答案 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);
}