Exceção gerada pelo Hibernate - Unknown entity[RESOLVIDO]

4 respostas
Djonatah

Boa noite galera,

Estou tentando começar no Hibernate :). Consegui fazer algumas coisas básicas como: Inserir, remover, e listar todas as entries, mas ao tentar usar o HQL eu estou recebendo a seguinte excessão:

  1. A configuração foi feita pelo hibernate.properties. (eu olhei por aí, e aconselharam fazer a configuração pelo hibernate.cfg.xml, mas não consegui fazer ele funcionar :frowning: )
  2. Estou usando annotations na minha bean
package br.com.sonee.business;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity(name = "Pessoa")
public class Pessoa implements Serializable{
	@Id
	@GeneratedValue
	private Long id;
	private String name;
	private String dataNasc;
	
	@Column(name = "id")
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	@Column(name = "name")
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Column(name = "dataNasc")
	public String getDataNasc() {
		return dataNasc;
	}
	public void setDataNasc(String dataNasc) {
		this.dataNasc = dataNasc;
	}
}

Tentei bastante coisa, mas não consegui nada. Se alguém puder me ajudar ficaria feliz.
Abraços
<><

4 Respostas

leandronsp

Vc mapeou a entidade no seu XML? Posta seu hibernate xml ae.
[]´s

jmag

Boa noite..
Para configura o Hibernate é bem simples..

Crie um pacote tipo:

package meusistema.util;

e defina e crie a seguinte classe,

package meusistema.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernatebUtil {

	private static final SessionFactory sessionFactory;
	
	static
	{
		AnnotationConfiguration configuration = new  AnnotationConfiguration()
		.configure("meusistema/util/hibernate.cfg.xml");
		sessionFactory = configuration.buildSessionFactory();	
	}

	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}	
}

Quando todos os mapeamentos têm sido analisados pelo Configuration, a aplicação deve obter uma factory
para as instâncias da Session. O objetivo desta factory é ser compartilhado por todas as threads da aplicação:
SessionFactory sessions = configuration.buildSessionFactory();
Hibernate permite sua aplicação instanciar mais do que uma SessionFactory. Isto é útil se você estiver usando
mais de um banco de dados. (Documentação da Referência do Hibernate)

E add o Hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory> 
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost/mydb</property>
		<property name="connection.username">usuario</property>
		<property name="connection.password">senha</property>
		<property name="c3p0.min_size">1</property>
		<property name="c3p0.max_size">5</property>
		<property name="c3p0.timeout">200</property>
		<property name="c3p0.max_statements">30</property>
		<property name="c3p0.idle_test_period">300</property>
		<property name="current_session_context_class">thread</property>  
               <!-- show SQL-->
               <property name="show_sql">true</property>		
               <property name="format_sql">true</property>

		<mapping class="meusistema.model.bean.MinhaClasse"></mapping>
		<mapping class="meusistema.model.bean.MaisClasse"></mapping>
	</session-factory>
</hibernate-configuration>

tá tudo na documentação de referência do hibernate!
Outra coisa ve se na @Entity(name="Pessoa") o nome é realmente Pessoa no banco de dados... tem que ser igual se nao me engano...
abraços!

Djonatah

Bom, consegui fazer a configuracao por xml (eu estava tendo problemas para carregar o xml).

agora a aplicacao ficou estruturuda +/- assim:

bin
--hibernate.cfg.xml
--br
-----com
-----busineess
-----dao
-----util

Estou no trabalho, e aqui tentei a mesma coisa, mas com uma classe um pouco diferente.
Aqui vai o hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC  
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  

<hibernate-configuration>  
	<session-factory>  
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
		<property name="hibernate.connection.url">jdbc:mysql://localhost/testhibernate</property>  
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
		<property name="hibernate.connection.username">root</property>  
		<property name="hibernate.connection.password"></property>  
		<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
		<property name="show_sql">true</property>  
		<property name="hbm2ddl.auto">update</property>  


		<mapping class="br.com.business.Pessoa"/>          
    </session-factory>  
</hibernate-configuration>
e essa eh busca que esta dando problema:
public List<Pessoa> procura(String nome){
			return this.sessao.createCriteria("from Pessoa where nome = '" + nome + "'").list();
		}

Valeu pela mão o/
Abraços
<><

Djonatah

Valeu galera, descobri o que eu estava fazendo de errado.

Eu estava usando o método createCriteria pra fazer uma busca usando HQL, quando eu deveria estar usando o método createQuery

Abraços e valeu a ajuda
<><

Criado 9 de junho de 2009
Ultima resposta 11 de jun. de 2009
Respostas 4
Participantes 3