2017-10-06 67 views
0

I「已經從netbeans的嚮導生成寧靜web服務。有獲取方法,用於檢索基於ID從數據庫中的數據(SELECT * FROM例如其中id = someId),並返回一個結果。兩個參數爲namedQuery寧靜web服務

我已經嘗試了不同的標準,比方說名字將被返回不止一個結果,我得到這個錯誤:

javax.servlet.ServletException:java.lang.ClassCastException: java.lang.String中不能cast to web.Barang

有人可以告訴我如何解決這個問題,任何幫助將是非常讚賞

這是我的文件:

我NamedQuery(barang.java)

@NamedQuery(NAME =「啷.cariId」,查詢= 「選擇b。從啷b WHERE b.postCategoryId =:postCategoryId AND b.status = 'tersedia'」)

我的函數(AbstractFacade.java)

public T cariId(Integer postCategoryId) { 
    return (T) getEntityManager().createNamedQuery("Barang.cariId").setParameter("postCategoryId", postCategoryId).getResultList().toString(); 
} 

我GET方法(barangfacadeRest.java)

@GET 
@Path("cariId/{postCategoryId}") 
@Produces({"application/xml", "application/json"}) 
public Barang cariId(@PathParam("postCategoryId") int postCategoryId) { 
    return super.cariId(postCategoryId); 
} 
+0

如果您刪除'toString'調用,您會得到什麼? – ujulu

+0

嗨,thx回覆。結果仍然是一樣的。任何想法? –

回答

0

如果T是一個泛型類型參數,我覺得缺了點什麼。除此之外,通用定義此方法沒有任何意義,因爲您的查詢只能返回Barang類型的對象。所以,我如下會重寫它:

public Barang cariId(Integer postCategoryId { 
    TypedQuery<Barang> q = em.createNamedQuery("Barang.cariId", Barang.class); 
    q.setParameter("postCategoryId", postCategoryId); 
    List<Barang> result = q.getResultList(); 
    if (result != null && !result.isEmpty()) { 
     return result.get(0); 
    } 
    return null; 
} 

如果其他的事情都是正確的,這應該刪除ClassCastException例外。

+0

預先感謝您。 但我仍然在代碼中出現錯誤。 這裏我的sc: https://ibb.co/dxBzBG 我希望你想幫助我,我已經發布我的問題,無數論壇,沒有人給出答案。只有你我最後的希望。 再一次,非常感謝你 –

+0

服務器錯誤是這樣的; https://ibb.co/cCUY5b –

+0

Mr.ujulu 感謝對我的幫助,我的代碼工作現在 從我最深的心臟,非常感謝你 願上帝永遠保佑您和家人 –