Native query para objeto não anotado como @Entity

É 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;  

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.

ayslanms,

obrigado pela resposta, eu não tinha prestado atenção no “detalhe”.

ja coloquei como resolvido.