我有一个使用 NetBeans 构建的 JAVA RESTful API。我创建了一个自定义方法来使用不是主键的字段检索数据。如果我在数据库本身上运行此 SQL 命令,我会得到数据,但是如果我通过 API 运行它,我会得到 0 个结果。
这是命名查询:
@NamedQuery(name = "KeywordsView.findByCharId", query = "SELECT k FROM KeywordsView k WHERE k.charId = :charId")
调用此查询的方法:
@GET
@Path("findcharid/{charId}")
@Produces({MediaType.APPLICATION_JSON})
public List<KeywordsView> findByCharId(@PathParam("CharId") Integer charId){
return getEntityManager().createNamedQuery("KeywordsView.findByCharId", KeywordsView.class).setParameter("charId", charId).getResultList();
}
我已经调试了 URL,它正在按预期调用和运行 URL。
有什么明显的错误吗?
最佳答案
由于 @PathParam("CharId")
中的 "CharId"
与 {charId} 不匹配,charId 值为空
。这不会产生任何结果,因为 null 比较总是错误的。@Path("findcharid/{charId}")
中的
@GET
@Path("findcharid/{charId}")
@Produces({MediaType.APPLICATION_JSON})
// Should match the case
public List<KeywordsView> findByCharId(@PathParam("CharId") Integer charId){
System.out.println("charId:"+charId);
return getEntityManager().createNamedQuery("KeywordsView.findByCharId", KeywordsView.class).setParameter("charId", charId).getResultList();
}
关于JAVA API 未返回任何结果。在服务器上运行的 SQL 查询确实,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52076066/