【问题标题】:two parameters for namedQuery restful webservicenamedQuery restful webservice 的两个参数
【发布时间】:2017-10-09 17:35:48
【问题描述】:

我已经从 netbeans 向导生成了宁静的 web 服务。有 get 方法可以根据 id(Select * From example Where id=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 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);
}

【问题讨论】:

  • 如果您删除 toString 电话,您会得到什么?
  • 嗨,谢谢回复。结果还是一样。有什么想法吗?

标签: java rest web-services


【解决方案1】:

如果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 异常。

【讨论】:

  • 提前谢谢您。但我仍然在代码中遇到错误。这里是我的 sc :ibb.co/dxBzBG 我希望你能帮助我,我已经将我的问题发布到了许多论坛,但没有人给出答案。只有你是我最后的希望。再次,非常感谢您
  • Mr.ujulu 感谢您的帮助,我的代码现在可以从我的内心深处工作了,非常感谢您,愿上帝永远保佑您和家人
猜你喜欢
  • 2012-08-03
  • 1970-01-01
  • 2013-05-02
  • 2015-05-18
  • 2011-11-25
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 2016-04-02
相关资源
最近更新 更多