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

What's wrong with this Java Persistence query?

我想创建一个查询,它会给我对象类型为 Organisatie 的数据。

这是我目前所拥有的

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();

提供更多信息:我有一个名为“联系人”的 table。 这是一个抽象 class。 class 组织和人员继承自 class。

出于某种原因,我无法直接从组织或个人创建 select。 这就是为什么我要这样尝试...希望这能解决我的问题!

::EDIT2::

Farheq 他的第一个查询没有工作。但实际上查询是正确的! 必须更改列表的对象类型,不是列表而是列表。所以正确的方法如下:

@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 包含 [=14] 的联系人=] 所以把你的价值放在 % %:

em.createQuery("SELECT c FROM Contact c WHERE c.naam LIKE :custName")
.setParameter("custName","%ORGANISATIE%")
.getResultList();

同样上面的 JPQL 查询是 returning Contact 的列表,但是 findAll() 方法 returns List<Organizatie>,它需要 [= getResultList() 收集的 31=]ing 应该与方法的 return 类型兼容,在这种情况下,您可以将 select 更改为 select Organizatie 对象 将方法的 return 类型更改为 List<Contact> 取决于您的实体,您可以将 return 通过使用 (List<Contact>) 通过上述查询编辑集合(如果可以转换为它)。