有什么解决方案可以回滚已保存文档的mongo交易吗?
我有一种方法
@Transactional
public Order createPerson(Person person, String name) {
person.setName(name);
personRepository.save(person);
//generate a new personalNumber and saves it in PersonalNumber document
PersonalNumber personalNumber = mongoOperations
.findAndModify(Query.query(where("name").is(name)), new Update().inc("personalNumber", 1L), options().returnNew(true), PersonalNumber.class);
if (personalNumber == null) {
//throw exception
}
person.setPersonalNumber(personalNumber.getPersonalNumber());
//save the person
return personRepository.save(person);
}
我先在Persons集合中保存不带PersonalNumber的Person,然后我想通过findAndModify()使用'name'作为标识符生成一个personNumber。如果存在“名称”,则在PersonalNumber文档中增加PersonalNumber。如果不是,则抛出异常。之后,将personNumber分配给该人并再次保存。
我正面临事务注释的问题。 我想要的是,当findAndModify()方法失败时,事务将回滚Person的初始创建。但是,@ Transactional没有执行所需的任务。
我也用过
@Transactional(rollbackForClassName = {"Exception"})
,但不会回滚初始创建。
有什么解决办法吗?谢谢
注意:由于技术要求,我不想更改当前代码流,即保存,findAndModify,更新。