【问题标题】:Delete Mapping Exception in Spring Data删除 Spring Data 中的映射异常
【发布时间】:2019-12-11 13:17:38
【问题描述】:
您好,如果用户输入系统中不存在的 id,我想抛出异常。
这是我的地图
@DeleteMapping("/drugs/{neo4jId}")
public void deleteDrug(@PathVariable Long neo4jId) {
drugsRep.deleteById(neo4jId);
}
你有什么建议?
* 我不想只在我的前端处理它
【问题讨论】:
标签:
java
spring
spring-mvc
spring-data
【解决方案1】:
你可以试试这样的:
if (drugsRep.existsById(neo4jId)) {
throw new EntityNotFoundExceptionById("Invlaid Id was provided");
}
drugsRep.deleteById(neo4jId);
如果您定义了自定义异常,您可以将其映射到适当的 http 状态。
@ResponseStatus(HttpStatus.NOT_FOUND)
public class EntityNotFoundExceptionById extends RuntimeException {
public EntityNotFoundExceptionById(String message) {
super(message);
}
}
【解决方案2】:
早上好,在这种情况下,您可以检查用户是否存在。
在 Spring-mongodb 中,当你扩展名为 existsById 的 MongoRepository 时,它有一个功能。所以看看文档,也许你的仓库也有这个功能。
而且,当你使用这个函数时,你可以抛出一个异常。喜欢代码
if(!repository.existsById(id)){
throw new NotFoundException();
}
repository.deleteById(id);