namedQuery restful webservice

时间:2017-10-06 15:31:59

标签: java rest web-services

我从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);
}

1 个答案:

答案 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例外。