【发布时间】:2026-02-13 05:55:01
【问题描述】:
我的@RestController
@GetMapping("/projects/{project_id}")
public Project getProjectById(@PathVariable(value = "project_id") UUID projectId) {
return projectRepository.findById(projectId).orElseThrow(Util.notFound(projectId));
}
我的 projectRepository 是
@Repository
public interface ProjectRepository extends PagingAndSortingRepository<Project, UUID> {
}
public class Util {
static Supplier<ResourceNotFoundException> notFound(UUID msg) {
log.error(msg + " not found");
return () -> new ResourceNotFoundException(msg + " not found");
}
}
当我执行 GET {{host}}/projects/{{projId1}} 时,它会返回结果。但是,在日志中,它显示 .
org.hibernate.SQL: select project0_.id as id1_4_0_, proje...
o.h.type.descriptor.sql.BasicBinder: binding parameter [1] as [OTHER]
ERROR: projectId not found .
orElseThrow 是如何在数据返回后总是被执行的?
【问题讨论】:
-
我认为如果可能的话,我们需要一个Minimal, Complete, and Verifiable example 来重现这个。你有 git repo 或类似的。
-
附注:
@Repository注释在PagingAndSortingRepository上是多余的。 -
@earthw0rmjim 是的,你是对的
标签: java spring-boot optional spring-restcontroller spring-repositories