2017-10-06 63 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 感谢对我的帮助,我的代码工作现在 从我最深的心脏,非常感谢你 愿上帝永远保佑您和家人 –