目前正在学习兵变和交易与休眠-React性。我需要将Mess对象保存在数据库中,如果有特定的条件,我想回滚事务,发送某种失败消息作为save方法的返回参数。
我如何产生失败或异常。在这种情况下,最佳做法是什么?
你能给我展示一个使用这个代码片段的例子吗?
public Uni<Mess> save(Mess mess) {
return Panache.withTransaction(() -> {
if(mess.message.equals("Hello World")){
Panache.currentTransaction().invoke(Transaction::markForRollback).subscribe().with(item -> Log.info("Transaction is marked for roll-back"));
}
return persist(mess);
});
}
1条答案
按热度按时间whhtz7ly1#
这取决于你是否认为这是一个例外。
您可以使用
Uni.createFrom().failed(...)
创建出现故障的UNI。因此,重写您的示例的一种方法是:如果您不认为这是一个失败,您可以使用
Uni.createFrom().nullItem()
或Uni.createFrom().item(...)
返回其他内容。要记住的一件事是,会话应该被丢弃,以防在使用它时发生异常。帕纳奇不能处理这种情况。There is an issue about this,并讨论了一些解决方法。但是,简而言之,一种解决方法是直接使用休眠React式: