gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:17:32 26 4
gpt4 key购买 nike

我尝试获取一个有关如何在 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);
}

关于java - 如何使用jdbi和dropwizard使用@Transaction实现提交和回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51512325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com