Olá pessoal, meu primeiro post aqui no forum prazer em conhece-los!
Enfim, estou começando agora com Java (venho do c#) e estou simplesmente tentado conectar com o PostgreSQL através do Hibernate, mas tá osso. Vou postar os códigos…
Reparem que o erro acontece no DAO vide comentário.
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="hibernate.dialect">
org.hibernate.dialect.PostgreSQLDialect
</property>
<property name="hibernate.connection.driver_class">
org.postgresql.Driver
</property>
<property name="hibernate.connection.url">
jdbc:postgresql://localhost/JavaHibernate
</property>
<property name="hibernate.connection.username">postgres</property>
<property name="hibernate.connection.password">teste</property>
<!-- Configuração de debug -->
<property name="show_sql">true</property>
<property name="use_outer_join">true</property>
<property name="hibernate.generate_statistics">false</property>
<property name="query.substitutions">true 1, false 0, yes 1, no 0</property>
<!-- Mapeamento dos arquivos hbm -->
<mapping class="pojo.Alunos"/>
</session-factory>
</hibernate-configuration>
DAO (Database.java)
package dao;
import com.mchange.v2.naming.JavaBeanObjectFactory;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
public class Database {
private static final SessionFactory sessionFactory;
private static final ThreadLocal<Session> threadLocal =
new ThreadLocal<Session>();
static {
try{
Configuration configuration = new AnnotationConfiguration();
configuration.configure("hibernate.cfg.xml"); // nesse momento ele parece o trace: INFO: Configured SessionFactory: null
sessionFactory = configuration.buildSessionFactory(); // Exatamente nesse momento acontece o erro e cai no catch
}catch(Throwable t){
throw new ExceptionInInitializerError(t);
}
}
public static Session getInstance(){
Session session = (Session) threadLocal.get();
session = sessionFactory.openSession();
threadLocal.set(session);
return session;
}
public static void saveOrUpdate(Object objeto) throws Exception{
Session session=Database.getInstance();
Transaction tr=session.beginTransaction();
session.saveOrUpdate(objeto);
tr.commit();
session.close();
}
public static void delete(Object objeto) throws Exception{
Session session=Database.getInstance();
Transaction tr=session.beginTransaction();
session.delete(objeto);
tr.commit();
session.close();
}
public static java.util.List createQuery(String hql, int pos, String filtro){
return Database.getInstance().createQuery(hql).setString(
pos, filtro).list();
}
}
Detalhes do erro:
16/04/2011 01:46:02 org.hibernate.cfg.annotations.Version <clinit>
INFO: Hibernate Annotations 3.2.0.GA
16/04/2011 01:46:02 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.2.0
16/04/2011 01:46:02 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
16/04/2011 01:46:02 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
16/04/2011 01:46:03 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
16/04/2011 01:46:08 org.hibernate.cfg.Configuration configure
INFO: configuring from resource: hibernate.cfg.xml
16/04/2011 01:46:08 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: hibernate.cfg.xml
16/04/2011 01:46:08 org.hibernate.cfg.Configuration doConfigure
INFO: Configured SessionFactory: null
16/04/2011 01:50:10 org.hibernate.cfg.AnnotationBinder bindClass
INFO: Binding entity from annotated class: pojo.Alunos
16/04/2011 01:50:10 org.hibernate.cfg.annotations.EntityBinder bindTable
INFO: Bind entity pojo.Alunos on table Alunos
Exception in thread "main" java.lang.ExceptionInInitializerError
at dao.Database.<clinit>(Database.java:18)
at javaBanco.Principal.retornaAluno(Principal.java:26)
at javaBanco.Principal.initComponents(Principal.java:22)
at javaBanco.Principal.<init>(Principal.java:14)
at javaBanco.Main.<init>(Main.java:7)
at javaBanco.Main.main(Main.java:10)
Caused by: org.hibernate.AnnotationException: No identifier specified for entity: pojo.Alunos
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:626)
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:452)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:268)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1210)
at dao.Database.<clinit>(Database.java:16)
... 5 more
Qual o problema? Obrigado pessoal!