我从netbeans向导生成的restful webservices。有一个get方法,用于根据id(Select * From example where where = someId)从数据库中检索数据并返回单个结果。
我已尝试过不同的标准,让我们说出会返回多个结果的名称,我会收到此错误:
javax.servlet.ServletException:java.lang.ClassCastException: java.lang.String无法强制转换为web.Barang
有人可以告诉我如何解决这个问题,任何帮助都会非常感激
这是我的档案:
我的NamedQuery(barang.java)
@NamedQuery(name =" Barang.cariId",query =" SELECT b FROM Barang b 在哪里b.postCategoryId =:postCategoryId和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 :(得分: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
例外。