我有一個表的客戶端,並從檢索結果我用這種方式如何處理JPA實體
public ClientParent getClient(Long clientId,Long parentId){
String queryString="SELECT cp FROM Client cp where cp.cid.id=:clientId " +
"and cp.pid.id=:parentId ";
Query query=entityManagerUtil.getQuery(queryString);
query.setParameter("clientId", clientId);
query.setParameter("parentId", parentId);
return (ClientParent)query.getSingleResult();
}
這是DAO方法。
其實在第一個控制讓客戶進入到控制器類再到服務,然後DAO類
現在讓我們說客戶端表是空的,所以在這種情況下return (ClientParent)query.getSingleResult();
將拋出我的錯誤。
我可以通過在服務類以及控制器類的try catch塊中處理這個問題。但想知道如果我可以做出來拋出任何異常。我的意思是我有改變查詢或應該怎麼做我返回,以便它不會拋出異常,即使表是空
所以如果表不能爲空,然後它會返回null.I主叫ClientParent的服務類'ClientParent CP = clientDaoImpl.getClientParent(的clientId,parentId的)所述的方法; \t \t cp.setDeleted(true); \t \t entityManagerUtil.update(cp);'所以cp對於空表是如此的,所以在服務類中也會拋出錯誤 – rocking
如果你沒有找到對象,你會怎麼做?你會創建一個新的?你可以在你的服務中使用'if(cp!= null)'。 – Jens
也result.size()返回int所以我們可以做result.size()!= null – rocking