Ola colegas, gostaria de pedir a ajuda de voces. Estou iniciando em hibernate, estou fazendo um projeto desktop com hibernate. Seguinte, mapiei todas as classes, tudo certinho, porem quando eu mando rodar uma query da um erro de que nao foi feito mapeamento da classe. vou mandar os meus codigos.
Conexao.java
package sel.persistencia;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Conexao {
private static final SessionFactory sessionFactory;
static{
try{
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable e) {
throw new ExceptionInInitializerError(e);
}
}
public static Session getInstance() {
return sessionFactory.openSession();
}
}
Usuario.java
package sel.negocio;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Entity;
@Entity
@Table(name="usuario")
public class Usuario {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id_usuario")
private Integer idUsuario;
@Column(name="nome_usuario", nullable=false, length=100)
private String nomeUsuario;
@Column(name="login_usuario", nullable=false, length=30, unique=true)
private String loginUsuario;
@Column(name="senha_usuario", nullable=false, length=64)
private String senhaUsuario;
@Column(name="data_registro", nullable=false, length=10)
private String dataRegistro;
@ManyToOne()
@JoinColumn(name="fk_tipo_usuario")
@Cascade(CascadeType.SAVE_UPDATE)
private TipoUsuario tipoUsuario;
public Integer getIdUsuario() {
return idUsuario;
}
public void setIdUsuario(Integer idUsuario) {
this.idUsuario = idUsuario;
}
public String getNomeUsuario() {
return nomeUsuario;
}
public void setNomeUsuario(String nomeUsuario) {
this.nomeUsuario = nomeUsuario;
}
public String getLoginUsuario() {
return loginUsuario;
}
public void setLoginUsuario(String loginUsuario) {
this.loginUsuario = loginUsuario;
}
public String getSenhaUsuario() {
return senhaUsuario;
}
public void setSenhaUsuario(String senhaUsuario) {
this.senhaUsuario = senhaUsuario;
}
public String getDataRegistro() {
return dataRegistro;
}
public void setDataRegistro(String dataRegistro) {
this.dataRegistro = dataRegistro;
}
public TipoUsuario getTipoUsuario() {
return tipoUsuario;
}
public void setTipoUsuario(TipoUsuario tipoUsuario) {
this.tipoUsuario = tipoUsuario;
}
}
UsuarioDAO.java
package sel.dao;
import java.util.List;
import org.hibernate.Query;
import sel.negocio.Usuario;
import sel.persistencia.Conexao;
public class UsuarioDAO extends GenericDAO<Object>{
List<Usuario> resultado;
public boolean validarUsuario() {
session = Conexao.getInstance();
boolean resposta = false;
try {
tx = session.beginTransaction();
Query q = session.createQuery("from Usuario as u where u.loginUsuario = :login and u.senhaUsuario = :senha");
q.setString("login", "gustavo.costa");
q.setString("senha", "123");
int result = q.list().size();
if(result != 0) {
resposta = true;
} else {
resposta = false;
}
} catch(Exception erro) {
System.out.println(erro);
}
return resposta;
}
}
hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/sel</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">@etropus@</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.show_sql">true</property>
<mapping class="sel.negocio.Alerta"/>
<mapping class="sel.negocio.Arrematante"/>
<mapping class="sel.negocio.Bairro"/>
<mapping class="sel.negocio.Cidade"/>
<mapping class="sel.negocio.Comitente"/>
<mapping class="sel.negocio.Despesa"/>
<mapping class="sel.negocio.Icms"/>
<mapping class="sel.negocio.Leilao"/>
<mapping class="sel.negocio.Leiloeiro"/>
<mapping class="sel.negocio.Lote"/>
<mapping class="sel.negocio.LoteArrematado"/>
<mapping class="sel.negocio.Propriedade"/>
<mapping class="sel.negocio.Setor"/>
<mapping class="sel.negocio.Telefone"/>
<mapping class="sel.negocio.TipoPessoa"/>
<mapping class="sel.negocio.TipoProduto"/>
<mapping class="sel.negocio.TipoRegiao"/>
<mapping class="sel.negocio.TipoTelefone"/>
<mapping class="sel.negocio.TipoUsuario"/>
<mapping class="sel.negocio.Uf"/>
<mapping class="sel.negocio.Usuario"/>
</session-factory>
</hibernate-configuration>
GenericDAO
package sel.dao;
import java.util.List;
import org.apache.log4j.Logger;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import sel.persistencia.Conexao;
public abstract class GenericDAO<T> {
protected Logger log = Logger.getLogger("desenvolvimento");
protected Session session;
protected Transaction tx;
protected Boolean sucesso = new Boolean(false);
protected Boolean salvarOuAlterar(T obj) {
log.debug("PERSISTINDO objeto da classe: "+obj.getClass());
session = Conexao.getInstance();
try{
tx = session.beginTransaction();
session.saveOrUpdate(obj);
session.flush();
sucesso = true;
log.debug("Objeto da classe "+obj.getClass()+" PERSISTIDO com sucesso!");
} catch(Exception e) {
tx.rollback();
sucesso = false;
log.debug("Ocorreu um erro ao PESISTIR o objeto da classe: "+obj.getClass());
log.error("Classe GenericDAO --- Erro no método salvarOuAlterar(): "+e);
e.printStackTrace();
} finally {
session.close();
}
return sucesso;
}
protected Boolean remover(T obj) {
log.debug("REMOVENDO objeto da classe: "+obj.getClass());
session = Conexao.getInstance();
try{
tx = session.beginTransaction();
session.delete(obj);
session.flush();
sucesso = true;
log.debug("Objeto da classe "+obj.getClass()+" REMOVIDO com sucesso!");
} catch(Exception e) {
tx.rollback();
sucesso = false;
log.debug("Ocorreu um erro ao REMOVER o objeto da classe "+obj.getClass());
log.error("Classe GenericDAO --- Erro no metodo remover(): "+e);
e.printStackTrace();
} finally {
session.close();
}
return sucesso;
}
protected Object buscarPorId(String nomeClasse, Integer pk) {
log.debug("BUSCANDO objeto da classe: "+nomeClasse+" pelo id: "+pk);
session = Conexao.getInstance();
Object obj = null;
try{
tx = session.beginTransaction();
obj = session.load(nomeClasse, pk);
log.debug("BUSCA do objeto da classe "+nomeClasse+" executada com sucesso!");
} catch(Exception e) {
log.debug("Ocorreu um erro ao BUSCAR o objeto da classe: "+nomeClasse);
log.error("Classe GenericDAO --- Erro no metodo buscarPorId(): "+e);
e.printStackTrace();
} finally {
session.close();
}
return obj;
}
@SuppressWarnings("unchecked")
protected List<T> buscarTodos(String nomeClasse) {
log.debug("BUSCANDO todos os registros da classe: "+nomeClasse);
session = Conexao.getInstance();
Query query = session.createQuery("from "+nomeClasse);
List<T> lista = null;
try{
log.debug("BUSCA geral da classe "+nomeClasse+" executada com sucesso!");
tx = session.beginTransaction();
lista = query.list();
} catch(Exception e){
log.debug("Ocorreu um erro ao BUSCAR os registros da classe: "+nomeClasse);
log.error("Classe GenericDAO --- Erro no metodo buscarTodos(): "+e);
e.printStackTrace();
} finally{
session.close();
}
return lista;
}
protected Integer quantidadeRegistros(String nomeClasse) {
log.debug("BUSCANDO quantidade de registros da classe: "+nomeClasse);
Integer quantidade = new Integer(0);
session = Conexao.getInstance();
Query query = session.createQuery("from "+nomeClasse);
try{
log.debug("BUSCA de quantidade de registros da classe "+nomeClasse+" executada com sucesso!");
tx = session.beginTransaction();
quantidade = query.list().size();
} catch(Exception e){
log.debug("Ocorreu um erro ao TOTALIZAR os registros da classe: "+nomeClasse);
log.error("Classe GenericDAO --- Erro no metodo quantidadeRegistros(): "+e);
e.printStackTrace();
} finally{
session.close();
}
return quantidade;
}
protected void executar() {
tx.commit();
}
}
Fiz a query por meio do createQuery pois quando estava usando a namedQuery mapeada na minha classe de Usuario, tambem estava dando erro. Ajudem-me, dependo disso para continuar o projeto.
A sim, outra coisa, voces acham que o codigo que fiz esta legal, a conexao, por favor, critiquem para que eu possa melhorar.
Muito Obrigado.