Buenas!!!
Estou tentando fazer uma conexão usando o Hibernate JPA(em ambas as versões) com o banco oracle 11g do meu trabalho.
Porem, sempre que ele tenta criar o EntityManagerFactory ocorro uma Exception(javax.persistence.PersistenceException: [PersistenceUnit: Hibernate2PU] Unable to build EntityManagerFactory).
O algoritimo para fazer isso esta certo, ja que teste em um banco Postgres sem problemas; a conexão aparenta estar correta, pois consigo trazer todas as tabelas do banco e criar entitys automaticamente; o driver JDBC não é pois ja fiz uma conexão utilizando o java.sql com sucesso.
Quem souber se existe alguma coisa que tenha que se fazer a mais em banco Oracle, me ajude, por favor.
Agradeço desde ja.
O código é esse.
[code]
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.swing.JOptionPane;
/**
*
-
@author rodrigo.oliveira
*/
public class ManagerDAO {
private static EntityManager maneger;
public static EntityManager getManager() {
if (maneger == null) {
new ManagerDAO();
return maneger;
}
return maneger;
}
private ManagerDAO() {
try {
EntityManagerFactory emf = Persistence.createEntityManagerFactory(“Hibernate2PU”);
maneger = emf.createEntityManager();
} catch (Exception ex) {
//JOptionPane.showMessageDialog(null, “Erro ao criar conexão!\n” + ex.getMessage());
ex.printStackTrace();
}
}
}[/code]
Cola o log aí pra gente ver o que está acontecendo…
Opa, tai.
javax.persistence.PersistenceException: [PersistenceUnit: Hibernate2PU] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
at javaFlex.DAO.ManagerDAO.<init>(ManagerDAO.java:30)
at javaFlex.DAO.ManagerDAO.getManager(ManagerDAO.java:22)
at javaFlex.factorys.UsuarioFactoty.buscar(UsuarioFactoty.java:33)
at hibernate2.Main.main(Main.java:22)
Caused by: org.hibernate.HibernateException: unknown Oracle major version [11]
at org.hibernate.dialect.DialectFactory$1.getDialectClass(DialectFactory.java:135)
at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:65)
at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39)
at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:426)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:128)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
... 7 more
Exception in thread "main" java.lang.NullPointerException
at javaFlex.factorys.UsuarioFactoty.buscar(UsuarioFactoty.java:33)
at hibernate2.Main.main(Main.java:22)
Java Result: 1
Apenas um detalhe: estou fazendo um aplicação em Java-Flex. Mas estou testando as conexões em uma aplicação java normal, até funcionar. Depois paço para a aplicação em Flex.
Provavelmente o driver que você está utilizando para conectar no Oracle está desatualizado e não suporta a versão 11g. Ou você atualiza o driver ou tenta forçar o dialeto pra uma versão anterior, algo do tipo:
[code]<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>[/code]
Provavelmente o driver que você está utilizando para conectar no Oracle está desatualizado e não suporta a versão 11g. Ou você atualiza o driver ou tenta forçar o dialeto pra uma versão anterior, algo do tipo:
Ai cara, acho que resolvi o problema do Driver, porque agora esta dando um outro erro:
Caused by: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
Alguem pode me dizer o que quer dizer isso?
Você atualizou o driver ou mudou o dialeto?
Fabio, no meu caso sua solução de mudança do dialeto funcionou.