如何使用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);
}
我试图找到一个正确的例子来说明如何在 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);
}