Hibernate..por que o erro org.hibernate.hql.ast.QuerySyntaxException:


Olá ,

não entendi porque não acha a tabela na hora que chama o metodo
listaCategoria() me da o seguinte erro :


Categoria Incluido
Erro =org.hibernate.hql.ast.QuerySyntaxException: CATEGORIAS is not mapped [FROM CATEGORIAS]

<?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>
		<!--Database connection setting -->
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://127.0.0.1/loja</property>
		<property name="connection.username">root</property>
		<property name="connection.password">paribe</property>
		
		<!--JDBC connection pool(use built-in)-->
		<property name="connection.pool_size">1</property>
		<!--SQL dialect -->
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<!-- Enable Hibernate's automatic session context management -->
		<property name="current_session_context_class">thread</property>
		<!-- Disable the second-level cache -->
		<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
		<!-- Echo all execute SQL to stdout-->
		<property name="show_sql">false</property>
		
		<mapping resource="br/com/uso/model/Categoria.hbm.xml"/>
		
	</session-factory>
</hibernate-configuration>
---
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
		"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>

	<class name="br.com.uso.model.Categoria" table="Categorias">
	  <id name="idcategoria" column="idcategoria" type="int">
	  	<generator class="native"/>
	  </id>
	  <property name="categoria"/>
	 </class>
</hibernate-mapping>
---
public class GerenciadorCategoria {
	
	public void salvaCategoria (String nomeCategoria){
		
		try{
			
			SessionFactory sf = new Configuration().configure("br/com/uso/model/hibernate.cfg.xml").buildSessionFactory();
			Session s = sf.openSession();
			Transaction tx = s.beginTransaction();
			Categoria c = new Categoria();
			c.setCategoria(nomeCategoria);
			
			s.saveOrUpdate(c);
			tx.commit();
			s.close();
			System.out.println("Categoria Incluido");

			
			
		}catch(Exception e){
			System.out.println("Erro ="+e);
		}
	}
	
    public List  listaCategoria() {
		List lista = new ArrayList();
		try{
			
			SessionFactory sf = new Configuration().configure("br/com/uso/model/hibernate.cfg.xml").buildSessionFactory();
			Session s = sf.openSession();
			Transaction tx = s.beginTransaction();
			lista =s.createQuery("FROM CATEGORIAS").list();
			s.close();
			System.out.println("Categoria Lista ");
			
		}catch(Exception e){
			System.out.println("Erro ="+e);
		}
		return lista;
	}

}
---
package br.com.uso.model;

public class Categoria {

	
    private int idcategoria;
  
    private String categoria;
	
    
    public Categoria(){
    	
    }
	public int getIdcategoria() {
		return idcategoria;
	}
	
	public void setIdcategoria(int idcategoria) {
		this.idcategoria = idcategoria;
	}
	
	public String getCategoria() {
		return categoria;
	}
	
	public void setCategoria(String categoria) {
		this.categoria = categoria;
	}
  
}
return session.createCriteria(Classe.class).list()

Tenta colocar so isso

nada contra hbm… mais porque não utilizar Annotation… o desenvolvimento fica muito mais facil e rapido…

Voce esta abrindo uma transaction para um select?
Voce esta criando uma sessio e uma session factory em cada metodo???

Cuidado com o mal uso do Hibernate…

lista =s.createQuery("FROM CATEGORIAS").list();

Você ta colocando o nome da tabela(CATEGORIAS) o certo seria colocar o nome da classe(Categoria):

lista =s.createQuery("FROM Categoria").list();

Ou a solução dada pelo rdgms é até melhor :smiley: .

[]'s