Kei*_*fer 8 java spring-data spring-data-jpa
当用户使用无效 ID 搜索我的存储库时,我想抛出一个自定义错误类。这应该很简单,但我似乎无法捕捉到 JpaRepository 抛出的任何错误。我已经多次尝试解决这个问题,但以下是我最直接的尝试:
try {
Object obj = repository.getOne(id)
}
catch (EntityNotFoundException e) {
throw CustomException("message");
}
Run Code Online (Sandbox Code Playgroud)
在调试器中运行它时,存储库会抛出我期望的确切异常javax.persistence.EntityNotFoundException,但代码只是跳过了我的 catch 语句,并且函数返回一个错误。
我尝试使用repository.findById(id)类似的结果。我也试过捕捉Exception和Throwable。有任何想法吗?如果最终我的问题不是很明显,我会在我的帖子中添加更多信息。
JB *_*zet 11
getOne() 只是一个包装 EntityManager.getReference(). 该方法不会抛出任何异常。
它返回一个未初始化的代理,假设实体确实存在。它不会从数据库中获取实体状态,因此甚至不知道它是否存在。它假设确实如此。
如果您尝试访问实体的状态,您只会在稍后收到异常。
使用findById()/ findOne(),检查是否得到非空/非空结果(因为如果实体不存在,这些方法不会抛出任何异常,它们返回空或空),如果是这种情况,则抛出异常。
| 归档时间: |
|
| 查看次数: |
5391 次 |
| 最近记录: |