Eclipse / Java
我有一种执行数据库查询的方法。
myBean:
List<Composicao> itemProdutoLista = compPrecoServico.buscar(Composicao.nomeQuery);
nomeQuery是:
@NamedQuery(name = "nomeQuery", query= " SELECT composicao.valortotal,composicao.id FROM Composicao composicao
query - javax.persistence.query
public List<T> buscar(String nomeQuery) {
Query query = entityManager.createNamedQuery(nomeQuery);
return query.getResultList();
}
我的返回列表公交车让我得到:一个Object elementData
如何在返回的buscar方法中获取Entity Composicao元素数据?而不是object elementData
答案 0 :(得分:3)
我在上一个问题中提供了查询:
SELECT composicao FROM Composicao composicao
您是否理解选择实体的两个字段,就像您在查询中所做的那样
SELECT composicao.valortotal,composicao.id FROM Composicao composicao
^-- first field ^-- second field
不返回Composicao对象,只返回您选择的两个字段:valortotal
和id
?
您明确要求JPA仅返回 <{strong> valortotal
和id
。为什么它会返回所有其他字段并创建Composicao对象?你想要所有的字段,而不仅仅是valortotal和id。所以查询是(我将在第三次重复以防万一):
SELECT composicao FROM Composicao composicao
答案 1 :(得分: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')