gpt4 book ai didi

java - JPA NamedQuery 选择特定列并返回类类型

转载 作者:行者123 更新时间:2023-11-30 22:08:26 26 4
gpt4 key购买 nike

我正在使用 JPA,我有这样的基本命名查询

@NamedQuery(name="Manifest.findAll", query="SELECT m FROM Manifest m")

当我调用它时,

entityManager.createNamedQuery("Manifest.getManifestInfo").getResultList()

我把对象放回到这样的列表中

[{id:"1", name:"foo"},{id:"2", name:"bar"}]

但是我有另一个命名查询,我只是在其中获取名称

@NamedQuery(name="Manifest.getManifestName", query="SELECT m.name FROM Manifest m")

当我运行该查询时,我得到了

[["foo"],["bar"]] 

我怎样才能让第二个查询返回对象类型所以它的谎言

[{name:"foo"},{name:"bar"}]

我简化了这个来展示我在这里尝试做的事情,实际的表有更多的列,但它是相同的主体。

如何返回对象类型?

最佳答案

JPA 中该用例的功能是 Entity Graph .

像这样在您的实体上定义它:

@NamedEntityGraph(name="nameOnly", attributeNodes={
@NamedAttributeNode("name")
})
@Entity
public class Manifest {
...
}

您可以保持查询本身不变,但在运行之前将实体图应用于查询,作为加载图或获取图(有关解释,请参见上面的链接):

EntityGraph<EmailMessage> eg = em.getEntityGraph("nameOnly");
entityManager.createNamedQuery("Manifest.getManifestInfo").setHint("javax.persistence.loadgraph", eg).getResultList()

关于java - JPA NamedQuery 选择特定列并返回类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40919423/

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