ClientEntity clientEntity;
try {
clientEntity = entityManager.getReference(ClientEntity.class, clientId);
}
catch (EntityNotFoundException ex){
System.out.println("Wrong client id: there are no client with such id.");
return;
}
我发送了错误的参数值。在数据库中肯定没有这样的客户端(例如,id = 6)。但是
catch {}
无效。从
getReference
文档:如果请求的实例在数据库中不存在,则
实例状态为第一个时,抛出EntityNotFoundException
访问。 (允许持久性提供程序运行时抛出
调用getReference时出现EntityNotFoundException。)
但是在调试器中,我们可以看到
EntityNotFoundException
发生了。我究竟做错了什么?
最佳答案
你错过了
首次访问实例状态时引发EntityNotFoundException
您不会在代码中访问实体状态。
调试器访问实体以显示其属性。getReference()
不是检查实体存在的合适方法。
您可以使用以下内容(需要为JPA进行重写):
Hibernate: check if object exists
关于java - 无法从Hibernate捕获异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43889207/