targas
Abril 18, 2013, 7:53pm
#1
É possível fazer uma consulta com native query e jogar o resultado para dentro de um objeto nao anotado com @Entity ?
Classe sem anotação de @Entity
public class ComprasPorSetoresVOR {
private Integer id;
private String nomeRazaoSocial;
public ComprasPorSetoresVOR(Integer id, String nomeRazaoSocial) {
this.id = id;
this.nomeRazaoSocial = nomeRazaoSocial;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNomeRazaoSocial() {
return nomeRazaoSocial;
}
public void setNomeRazaoSocial(String nomeRazaoSocial) {
this.nomeRazaoSocial = nomeRazaoSocial;
}
}
código do DAO
public List<ComprasPorSetoresVOR> comprasPorSetores() {
String sql = "select id, nome_razao_social from tba_pessoas";
try {
Query nativeQuery = manager.createNativeQuery(sql);
List<ComprasPorSetoresVOR> comprasPorSetor = nativeQuery.getResultList();
return comprasPorSetor;
} catch (Exception e) {
System.out.println(e);
return null;
}
}
Sim é possível, mas o getResultList retornaria uma List de array de Object, onde cada posição do array seria o atributo.
Exemplo:
Query nativeQuery = manager.createNativeQuery(sql);
List<ComprasPorSetoresVOR> comprasPorSetor = new ArrayList<ComprasPorSetoresVOR>();
List<Object[]> list = nativeQuery.getResultList();
if(list != null){
for(Object[] objectArray : list ){
ComprasPorSetoresVOR compra = new ComprasPorSetoresVOR((Integer)objectArray[0], (String)objectArray[1]);
comprasPorSetor.add(compra);
}
}
return comprasPorSetor;
targas
Abril 19, 2013, 12:30am
#3
ayslanms,
obrigado por responder mas, assim fica difícil pois vou usar o objeto para gerar um relatório, nesta caso os campos ficariam todos “sem nome” sendo suas referencias apenas a posição do objeto.
Vou pensar na possibilidade de ao invés de passar a Lista de Objetos passar o ResultSet para o ireport, você tem alguma ideia para eu contornar este problema?
Poderia simplesmente usar Named SQL query . Caso não esteja usando Hibernate puro procure o similar em JPA pois não conheço JPA.
Mas você monta o objeto direto nesse método como eu mandei no exemplo e manda a lista de retorno para o relatório.
targas
Abril 24, 2013, 10:26am
#6
ayslanms,
obrigado pela resposta, eu não tinha prestado atenção no “detalhe”.
ja coloquei como resolvido.