这是我的问题:在将文档保存到Mongo之前,我必须进行一些低级唯一性检查。如果唯一性检查失败,我想阻止保存文档。
我决定使用AbstractMongoEventListener.onBeforeSave()
。
我在考虑以下内容:
class MyEventListener extends AbstractMongoEventListener<User> {
@Autowired
UserEmailRepository userEmailRepository;
@Override
public void onBeforeSave(BeforeSaveEvent<User> event) {
User user = event.getSource();
try {
UserEmail userEmail = new UserEmail(user.getEmail());
userEmailRepository.insert(userEmail);
} catch (DuplicateKeyException ex) {
//prevent from saving User document
}
}
}
但是我在执行阻止保存操作进行处理时遇到了问题。
我可以看到完成任务的3种可能性:
请你们给我一些如何完成这项任务的建议?
答案 0 :(得分:0)
阻止catch块中的保存操作(如果可能)
是。您可以通过从监听器中抛出异常来阻止。它会起作用。
参考其他人:
我假设您有2个不同的 @Documents ,在保存 @Document用户之前,您要检查是否可以保存 @Document UserEmail
你可以:
在两种情况下结果都是一样的。 UserEmail和User @Documents都不会被保存,并且会传播异常。