Sql 这个Java持久性查询有什么问题?

Sql 这个Java持久性查询有什么问题?,sql,jpa,netbeans,glassfish,persistence,Sql,Jpa,Netbeans,Glassfish,Persistence,我想创建一个查询,它将为我提供对象类型Organizatie的数据 这就是我目前所拥有的 public List<Organisatie> findAll() { return em.createQuery("SELECT c FROM Contact c WHERE c.naam LIKE :custName").setParameter("custName","ORGANISATIE").getResultList(); } 命令有效,但我的列表为空?有

我想创建一个查询,它将为我提供对象类型Organizatie的数据

这就是我目前所拥有的

public List<Organisatie> findAll() {
        return em.createQuery("SELECT c FROM Contact c WHERE c.naam LIKE :custName").setParameter("custName","ORGANISATIE").getResultList();
    }
命令有效,但我的列表为空?有什么想法吗?塔克斯

::编辑1: 对不起,复制粘贴错误。 这就是我使用的查询

public List<Organisatie> findAll() {
    return em.createQuery("SELECT c FROM Contact c WHERE c.dtype LIKE :type").setParameter("type","ORGANISATIE").getResultList();
要提供更多信息:我有一个表,称为Contact。 这是一个抽象类。班级组织和人员继承自该班级

由于某些原因,我无法直接从组织或个人中进行选择。 这就是为什么我要这样做…希望这是我的问题

::编辑2:

法赫克首先提出的问题没有奏效。但事实上,这个问题是正确的! 必须更改的是列表的对象类型,而不是列表,而是列表。因此,正确的方法如下:

@GET
@Produces({"application/xml", "application/json"})
@Override
public List<Contact> findAll() {
    return em.createQuery("SELECT c FROM Contact c WHERE c.dtype LIKE :type").setParameter("type", "%Organisatie%").getResultList();
}
由于您使用了like运算符,我想您肯定不是指=运算符,我想您希望检索其naam包含组织的联系人,所以请将您的值放入%%:


同样在上面,JPQL查询正在返回联系人列表,但findAll方法返回列表,要求getResultList返回的集合应与方法的返回类型兼容,在这种情况下,您可以将“选择”更改为“选择组织对象”,或者将方法的返回类型更改为“列表”,或者根据您的实体,您可以使用“列表”(如果可转换为列表)通过上述查询转换返回的集合

简单:表中没有名为Organizatie的联系人。似乎也不起作用:您的查询起作用了!我唯一需要更改的是列表中的对象类型!不是列表而是列表。因为Organizatie继承自Contact!Thanx FarhęgYou是受欢迎的,是的,我忘了,getResult返回的对象集合应该与我们要映射到的集合兼容。不管怎样,回答编辑好了,也谢谢你,祝你好运。
em.createQuery("SELECT c FROM Contact c WHERE c.naam LIKE :custName")
.setParameter("custName","%ORGANISATIE%")
.getResultList();