Você definiu a classe no hibernate.cfg.xml ?
Arquivo xml apenas o “.hbm.xml”.
Além desse, fiz o arquivo de configuração “hibernate.properties”.
Apenas esses dois.
Como está o seu xml??
Parece não estar encontrando o mapeamento dentro do
Arquivo Tarifa.hbm.xml
[code]<?xml version="1.0"?>
[/code]Sua classe Tarifa está dentro de algum pacote? Se sim, você tem que definir o caminho completo da classe no arquivo <Nomedaclasse>.hbm.xml dentro da tag class name
Exemplo
<class name="br.com.guj.beans.Tarifa" table.....
>
[quote=ManchesteR]Sua classe Tarifa está dentro de algum pacote? Se sim, você tem que definir o caminho completo da classe no arquivo <Nomedaclasse>.hbm.xml dentro da tag <class name.
Exemplo
><class name="br.com.guj.beans.Tarifa" table.....
nao… nenhuma classe está dentro de pacote algum.
Como está o seu DAO? na verdade, como você está iniciando o SessionFactory?
Outra coisa, eu aconselho você a usar apenas o arquivo hibernate.cfg.xml ao invés do hibernate.properties e Annotations ao invés dos arquivos .hbm.xml.
DAO:
[code]import org.hibernate.*;
import org.hibernate.cfg.Configuration;
import java.util.List;
import java.util.Properties;
import java.io.FileInputStream;
import java.util.Date;
public class TarifaDAO{
private SessionFactory factory;
public TarifaDAO() throws Exception{
Configuration cfg = new Configuration();
Properties props = new Properties();
props.load(new FileInputStream(“hibernate.properties”));
cfg.setProperties(props);
cfg.addClass(Tarifa.class);
factory = cfg.buildSessionFactory();
}
public void insert(Tarifa t) throws Exception{
Session session = factory.openSession();
session.save(t);
session.flush();
session.close();
}
public java.util.List getList(String condicao) throws Exception{
Session session = factory.openSession();
Criteria select = session.createCriteria(condicao);
List tarifas = select.list();
session.flush();
session.close();
return tarifas;
}
public Tarifa retrieve(int pk) throws Exception{
Session session = factory.openSession();
Tarifa t = (Tarifa)session.load(Tarifa.class, pk);
session.flush();
session.close();
return t;
}
public void delete(Tarifa t) throws Exception{
Session session = factory.openSession();
session.delete(t);
session.flush();
session.close();
}
}[/code]
vou dar uma olhada em como usar Annotations. Obrigado.
colocando as confs do banco no hibernate.cfg.xml o programa não consegue nem conectar ao banco:
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/minhaconta</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.connection.pool_size">10</property>
<property name="show_sql">true</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- Arquivos de mapeamento -->
<mapping resource="Tarifa.hbm.xml" />
</session-factory>
</hibernate-configuration>
erro: org.hibernate.HibernateException: database product name cannot be null
Ola Rissato, seu arquivo hibernate.cfg.xml está errado.
Olha um exemplo certo
<?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 settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/hibernate_annotations</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.username">root</property>
<property name="connection.password">password</property>
<!-- Mapping -->
<mapping class="hibernate.beans.Customers"/>
</session-factory>
</hibernate-configuration>
Note que dentro das tags, nao tem hibernate.connnection e sim apenas connection.
Se você for usar Annotations, repara que o modo de iniciar o SessionFactory é diferente, exemplo:
SessionFactory factory = new AnnotationConfiguration().configure().buildSessionFactory();
eu estou tentando configurar o hibernate sem annotations por enquanto. Mas o famoso “unknown entity” insiste em me perturbar. Eu estou adicionando a classe usando “cfg.addClass(Tarifa.class);” e também no arquivo “hibernate.cfg.xml” e nada faz o bendito ser mapeado.
nos tutorias eu li que o arquivo hibernate.cfg.xml é carregado automaticamente. Isso está certo? Como eu faço pra carregar ele explicitamente. Pq meu palpite é que ele nao está sendo carregado. Obrigado.
Qual o nome do seu bean? é apenas Tarifa mesmo?
pergunta besta mas vamo tenta ueh!
flw.
agora ficou até engraçado: Se eu insiro a linha “cfg.addClass(Tarifa.class);” o erro é o seguinte:
org.hibernate.MappingException: Error reading resource: Tarifa.hbm.xml
at org.hibernate.cfg.Configuration.addClass(Configuration.java:471)
at TarifaDAO.<init>(TarifaDAO.java:15)
at TesteHib.main(TesteHib.java:10)
Caused by: org.hibernate.MappingException: duplicate import: Tarifa
Se eu retiro a linha (supondo que a classe Tarifa já foi mapeada) o erro é o seguinte:
org.hibernate.MappingException: Unknown entity: from Tarifa
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFacto
ryImpl.java:569)
at org.hibernate.impl.SessionImpl.getOuterJoinLoadable(SessionImpl.java:
1337)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1303)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:300)
at TarifaDAO.getList(TarifaDAO.java:27)
at TesteHib.main(TesteHib.java:11)
Press any key to continue...
jah tiro o mapeamento do hibernate_cfg.xml pra ve o erro q dá?
digo, deixar apenas o cfg.addClass(Tarifa.class)
ta até engraçado esse erro hehehe.
flw.
ja testei… se tirar o mapeamento do hibernate.cfg.xml da problema na hora de parsear. o parser sente falta da tag e reclama:
[code]org.hibernate.HibernateException: problem parsing configurationhibernate.cfg.xml
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1173)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1112)
at TarifaDAO.<init>(TarifaDAO.java:11)
at TesteHib.main(TesteHib.java:10)
Caused by: org.hibernate.MappingException: invalid configuration
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1169)
… 3 more
Caused by: org.xml.sax.SAXParseException: The content of element type “session-f
actory” is incomplete, it must match “(property*,mapping+,(class-cache|collectio
n-cache|jcs-class-cache|jcs-collection-cache)*)”.[/code]
Consegui fazer o hibernate funcionar. O problema era que o arquivo hibernate.cfg.xml precisa ficar na mesma pasta do hibernate3.jar.
Olá tive o memso problema e resolvi alterando minha classe de entidade;
removi -> import org.hibernate.annotations.Entity;
acrescentei -> import javax.persistence.Entity;
resolveu meu problema…
jfeliperc …cara, estava com o mesmo problema aqui, e a troca dos imports resolveu tmbm vlws…