2017-05-10 103 views
0
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被抛出。 (持久性提供程序运行时允许扔 EntityNotFoundException时getReference被调用。)

但在调试器,我们可以看到,EntityNotFoundException发生。 我在做什么错?

debugger

回答

4

你错过这个

的EntityNotFoundException被抛出时的实例状态是第一次访问

你不访问在你的代码实体状态。

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

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

您可以使用这样的事情(需要改写为JPA): Hibernate: check if object exists

+0

这抓住了我的。 –