gpt4 book ai didi

database - Java EE getResultList() 只返回对象而不是相关的类类型对象

转载 作者:搜寻专家 更新时间:2023-10-30 22:14:47 26 4
gpt4 key购买 nike

我正在使用这段代码从数据库中检索对象。此代码返回一个对象,但该对象的类型只是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;

最佳答案

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

关于database - Java EE getResultList() 只返回对象而不是相关的类类型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15655047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com