这个Java Persistence查询有什么问题?

时间:2015-04-11 21:30:05

标签: sql jpa netbeans glassfish persistence

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

这是我到目前为止所拥有的

public List<Organisatie> findAll() {
        return em.createQuery("SELECT c FROM Contact c WHERE c.naam LIKE :custName").setParameter("custName","ORGANISATIE").getResultList();
    }

该命令有效,但我的列表是空的?有任何想法吗 ?感谢名单

:: EDIT1 :: 抱歉错误的复制粘贴。 这是我使用的查询

public List<Organisatie> findAll() {
    return em.createQuery("SELECT c FROM Contact c WHERE c.dtype LIKE :type").setParameter("type","ORGANISATIE").getResultList();

提供更多信息:我有一个名为Contact的表。 它是一个抽象类。类Organization和Person继承自该类。

出于某种原因,我无法直接从组织或人员中进行选择。 这就是我尝试这种方式的原因......希望这能澄清我的问题!

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

1 个答案:

答案 0 :(得分:0)

由于您使用过like运算符,我认为您的确不是=运算符,我认为您想要检索naam包含ORGANISATIE的联系人所以把你的价值放在% %

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

同样在JPQL查询之上返回Contact列表,但findAll()方法返回List<Organizatie>,要求getResultList()返回的集合应与返回类型兼容在这种情况下,您可以更改选择以选择Organizatie个对象将方法的返回类型更改为List<Contact> 依赖在您的实体上,您可以使用(List<Contact>)通过上述查询转换返回的集合,如果可以转换为它。