gpt4 book ai didi

java - Spring JPA 存储库无法捕获 EntityNotFoundException

转载 作者:行者123 更新时间:2023-11-30 07:47:25 24 4
gpt4 key购买 nike

当用户使用无效 ID 搜索我的存储库时,我想抛出一个自定义错误类。这应该是非常直接的,但我似乎无法捕捉到 JpaRepository 抛出的任何错误。我已经多次尝试解决这个问题,但以下是我最直接的尝试:

try {
Object obj = repository.getOne(id)
}
catch (EntityNotFoundException e) {
throw CustomException("message");
}

当在调试器中运行它时,存储库抛出的正是我所期望的异常 javax.persistence.EntityNotFoundException,但代码只是跳过了我的 catch 语句,函数返回了一个错误。

我尝试使用 repository.findById(id) 得到类似的结果。我还 try catch ExceptionThrowable。有任何想法吗?如果最终我的问题不是很明显,我会在我的帖子中添加更多信息。

最佳答案

getOne() 只是 EntityManager.getReference() 的包装器。该方法不会抛出任何异常。

它返回一个未初始化的代理,假设该实体确实存在。它不从数据库中获取实体状态,因此甚至不知道它是否存在。它假设它确实如此。

如果您尝试访问实体的状态,您以后只会得到一个异常。

使用findById()/findOne(),检查你是否得到一个非空/非空的结果(因为这些方法不会抛出任何异常如果实体不存在,它们返回空或 null),如果是这种情况则抛出异常。

关于java - Spring JPA 存储库无法捕获 EntityNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49784730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com