无法从Hibernate中捕获异常

时间:2017-05-10 10:00:54

标签: java hibernate

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发生了。 我做错了什么?

debugger

1 个答案:

答案 0 :(得分:4)

你错过了这个

  

首次访问实例状态时抛出EntityNotFoundException

您无法在代码中访问实体状态。

调试器访问实体以显示其属性。

getReference()不是检查实体存在的合适方法。

你可以使用这样的东西(需要为JPA重写): Hibernate: check if object exists