【问题标题】:Java EE getResultList() return just object not relevant class type objectJava EE getResultList() 只返回对象不相关的类类型对象
【发布时间】:2013-03-17 07:25:48
【问题描述】:

我正在使用此代码从数据库中检索对象。此代码返回一个对象,但该对象的类型只是Object

但是我想返回类型Pcinitialdata。如前所述,它只返回Object,其类型为Object

我该如何解决这个问题?

String qryStrforCom = "select pci.fileNo,pci.projectNo,pci.fundId,pci.decrp,pci.devSec,pci.estBy,pci.areaCode,pci.targetDate,pci.jobnoRecedate,pci.conBy,pci.supBy,pci.ht33,pci.lt11,pci.sub11,pci.lt3Phase,pci.ltsPhase,pci.abc5w,pci.abc4w,pci.abcsecct,pci.perCapacity,pci.newCapacity,pci.proLtrToEsOn,pci.stdCost,pci.detailCost,pci.varianceNew from Pcinitialdata pci where TRIM(pci.estNo) = :value";

Query querycom = getEntityManager(webAppName).createQuery(qryStrforCom);
querycom.setParameter("value", value);
List<Pcinitialdata> listCom=querycom.getResultList();
if (listCom.isEmpty()) {
    return null;
}
return listCom;

【问题讨论】:

  • 只是想知道,为什么你认为这个词是“retrive”?这真的不是一个英文单词,从上下文中很明显它应该是“retrieve”。

标签: database jakarta-ee object jpa jpql


【解决方案1】:

createQuery 方法使用的查询语言是 JPQL,而不是 SQL。

在 JPQL 中,您可以直接查询实体,而无需列出所有单独的属性。无论如何都支持列出它们,但结果是一个单独的属性列表,而不是单个实体。

此外,如果您至少使用 JPA 2.0 (Java EE 6),则可以在构造 Query 对象时输入类类型。然后代码将变为:

String qryStrforCom = "select pci from Pcinitialdata pci where TRIM(pci.estNo) = :value";
TypedQuery<Pcinitialdata> querycom = getEntityManager(webAppName).createQuery(qryStrforCom, Pcinitialdata.class);
querycom.setParameter("value", value);
List<Pcinitialdata> listCom = querycom.getResultList();
if (listCom.isEmpty()) {
    return null;
}

return listCom;

请注意,使用 JPA,您可以链接调用,并且通常使用空列表而不是 null 会更好。预先声明您的查询either in XML or via an annotation 也更方便。最后,尽量减少使用的缩写,并给你的变量起有意义的名字(例如value不应该被称为estNo等)

您的代码将变得简单:

return getEntityManager(webAppName)
    .createNamedQuery("Pcinitialdata.byEstNo", Pcinitialdata.class)
    .setParameter("estNo", estNo)
    .getResultList();

【讨论】:

  • 感谢您的帮助。我真的很欣赏它。我是这个领域的新手,我真的不知道 JPQL。我将尝试此代码并给您留下评论.. 再次感谢... :))
  • 花了几个小时后,找到了这个宝石答案,+1
猜你喜欢
  • 2017-03-26
  • 1970-01-01
  • 2013-10-30
  • 2016-05-14
  • 2015-02-26
  • 2018-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多