Hibernate @NamedQuery

Lista,

Gostaria de saber como usar no DAO abaixo a NamedQuery definida na classe CentroCusto.

Classe que configura o acesso ao banco mysql

[code]
package br.com.saomatheus.utils;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

public class DBConnection {

private static final SessionFactory SESSION_FACTORY;
private static final ThreadLocal<Session> THREAD_LOCAL = new ThreadLocal<Session>();

static {
	try{
		Configuration configuration = new AnnotationConfiguration();
		configuration.configure("hibernate.cfg.xml");
		SESSION_FACTORY = configuration.buildSessionFactory();			
		 
	}catch(Throwable t){
		throw new ExceptionInInitializerError(t);
		
	}
}

public static Session getInstance(){
	Session session = (Session) THREAD_LOCAL.get();
	session = SESSION_FACTORY.openSession();		
	THREAD_LOCAL.set(session);
	return session;
}

}[/code]

Classe onde defino a NamedQuery

package br.com.saomatheus.bean;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

import br.com.saomatheus.entity.Empresa;

@Entity
@NamedQueries({
	@NamedQuery(name = "CentroCusto.listarPorEmpresa",
			query = "SELECT cc FROM centroCusto cc WHERE cc.idEmpresa = :idEmpresa")
})
public class CentroCusto implements Serializable {	
	
	private Long idCentroCusto;		
	private Integer nivel1;
	private Integer nivel2;
	private Integer nivel3;
	private Integer nivel4;
	private String descrCentroCusto;
	private Empresa empresa;
	
	public CentroCusto() {
	}
	
	public String getDescrCentroCusto() {
		return descrCentroCusto;
	}

	public void setDescrCentroCusto(String descrCentroCusto) {
		this.descrCentroCusto = descrCentroCusto;
	}

	public Integer getNivel1() {
		return nivel1;
	}

	public void setNivel1(Integer nivel1) {
		this.nivel1 = nivel1;
	}

	public Integer getNivel2() {
		return nivel2;
	}

	public void setNivel2(Integer nivel2) {
		this.nivel2 = nivel2;
	}

	public Integer getNivel3() {
		return nivel3;
	}

	public void setNivel3(Integer nivel3) {
		this.nivel3 = nivel3;
	}

	public Integer getNivel4() {
		return nivel4;
	}

	public void setNivel4(Integer nivel4) {
		this.nivel4 = nivel4;
	}

	@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
	public Long getIdCentroCusto() {
		return idCentroCusto;
	}

	public void setIdCentroCusto(Long idCentroCusto) {
		this.idCentroCusto = idCentroCusto;
	}	

	@ManyToOne(fetch = FetchType.LAZY)	
	@JoinColumn(name = "idPessoa")
	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}
}

DAO onde pretendo usar a NamedQuery

package br.com.saomatheus.dao;

import java.util.List;

//import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.saomatheus.entity.CentroCusto;
import br.com.saomatheus.entity.Funcao;
import br.com.saomatheus.utils.DBConnection;

import javax.net.ssl.ManagerFactoryParameters;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.persistence.EntityManager.*;

	public List<CentroCusto> getCentrosCustos(Integer idEmpresa) {	
		session = DBConnection.getInstance();		
		List list = null;
		try {			
			// Não sei como pupular um list ou algo parecido com a NamedQuery. Vc pode me ajudar?

		} catch (Exception e) {
			e.printStackTrace();

		}
		return list;
	}

}