这个 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>)
通过上述查询编辑集合(如果可以转换为它)。
我想创建一个查询,它会给我对象类型为 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>)
通过上述查询编辑集合(如果可以转换为它)。