2017-05-10 27 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

這抓住了我的。 –