我正在尝试创建一个URI并返回一个寻找NIF的对象。 (一个自定义过滤器) 我试图通过id复制搜索但是不起作用,事实上,我不确定我做了什么。我有两个具有这些功能的课程
ClientesAbstractFacade.java
public T findNif(Object nif) {
return getEntityManager().find(entityClass, nif);
}
lientesFacadeREST.java
@GET
@Path("nif/{nif}")
@Produces({MediaType.APPLICATION_JSON})
public Clientes findNif(@PathParam("nif") String nif) {
return super.findNif(nif);
}
这里是POJO
@Entity
@Table(name = "clientes")
public class Clientes implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
正如您所看到的,我正在尝试进行自定义搜索,这很简单,然后实现登录。 但我甚至无法通过nif过滤,这些返回错误500
java.lang.IllegalArgumentException:您为此查找操作提供了错误PK类的实例。期望的类:类java.lang.Integer,接收的类:class java.lang.String。
答案 0 :(得分:1)
例外说明了一切:
IllegalArgumentException:您为此查找操作提供了错误PK类的实例。期望的类:类java.lang.Integer,接收的类:类java.lang.String
getEntityManager().find(entityClass, nif)
正在处理表格的主键列。作为例外情况,这是一个整数。
我想你想使用你的NamedQueries,因此使用EntityManager
- public T findNif(String nif) {
return (T) getEntityManager().createNamedQuery("Clientes.findByNif", Clientes.class)
.setParameter("nif", nif).getSingleResult();
}
的方法。
所以你的find-method看起来应该是这样的:
box-shadow