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