2014-02-14 70 views
0

Eclipse/Java返回实体列表而不是对象列表

我有一个方法来执行数据库查询。

为myBean:

List<Composicao> itemProdutoLista = compPrecoServico.buscar(Composicao.nomeQuery); 

的nomeQuery是:

@NamedQuery(name = "nomeQuery", query= " SELECT composicao.valortotal,composicao.id FROM Composicao composicao 

查询 - javax.persistence.query

public List<T> buscar(String nomeQuery) { 
    Query query = entityManager.createNamedQuery(nomeQuery); 
    return query.getResultList(); 
} 

我返回列表buscar让我说: 的Object elementData中

enter image description here

我怎么能在我的回报buscar方法得到实体Composicao elementData中?代替对象elementData中

+0

@JB识别的多数民众赞成我想关于如何阅读Java的ArrayList的子项 – Al2x

+0

,去年后我不太明白 - '名单 itemProdutoLista'包含'Composicao'类型的对象,以便代码的哪部分不正确? – Smutje

+0

请参阅我的打印屏幕。它得到我一个对象元素数据,我需要一个实体元素数据 – Al2x

回答

3

我给你以前的问题,使用查询:

SELECT composicao FROM Composicao composicao 

你难道不明白,选择一个实体的两个领域,因为你在查询

正在做
SELECT composicao.valortotal,composicao.id FROM Composicao composicao 
        ^-- first field  ^-- second field  

不返回Composicao对象,但你选择了简单的两个领域:valortotalid

您明确要求JPA仅返回valortotalid。为什么它会返回所有其他字段并创建一个Composicao对象?你想要所有的字段,而不仅仅是valortotal和id。因此,查询是(我会重复第三次,以防万一):

SELECT composicao FROM Composicao composicao 
+0

我们回到了那个老问题。我需要检索itemProdutoLista.get(0).get(0)为valorTotal和itemProdutoLista.get(0).get(1)为id。我知道那不存在get(x).get(y),但是我需要@JB Nizet – Al2x

+0

'Composicao firstComposicao = itemProdutoLista。(0)获得; int valortotal = firstComposicao.getValortotal(); Long id = firstComposicao.getId();'。如果你收到一个'List ',列表中的每个元素都是一个Composicao。这不明显吗? –

+0

我已经做到了,但是我得到了这个结果:java.math.BigDecimal不能转换为br.com.getsprint.gestao360.entidade.Composicao @JB Nizet – Al2x

0

假设你是在谈论类似JPA。

将一个构造函数放在接受每个查询参数的实体上(除空/默认构造函数外)。

@Entity 
public class Jedi 
    @Id private int id; 
    private String name; 

    //required by the standard 
    public Jedi(){} 

    public Jedi(int id, String name) { 
    this.id = id; 
    this.name = name; 
    } 

    //... 
} 

然后将查询

select NEW org.starwars.Jedi(j.id,j.name) from Jedi j where name.endsWith('Sky Walker') 
相关问题