我想创建一个查询,它将为我提供对象类型为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();
}
答案 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>)
通过上述查询转换返回的集合,如果可以转换为它。