Erro com Hibernate 4.1.8.Final

7 respostas
anderson.bonavides

Pessoal estou tendo o seguinde erro com Hibernate, devido as suas modificações nos pacotes e na configuração do CFG.

Estou usando as seguintes libs:

<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>4.1.8.Final</version>
		</dependency>
		
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-entitymanager</artifactId>
			<version>4.1.8.Final</version>
		</dependency>
		
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-annotations</artifactId>
			<version>3.5.6-Final</version>
		</dependency>

		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.6.6</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>nlog4j</artifactId>
			<version>1.2.25</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.6.6</version>
		</dependency>

Estou implementando a Session Factory:

public static Session getSession() {
		
		ServiceRegistry serviceRegistry = null;
		MetadataSources metadataSources = null;
		SessionFactory sessionFactory = null;
		
		try {
			
			serviceRegistry = new ServiceRegistryBuilder().configure(HIBERNATE_CFG_XML).buildServiceRegistry();
			metadataSources = new MetadataSources(serviceRegistry);
			sessionFactory = metadataSources.buildMetadata().buildSessionFactory();
			
			
		} catch (Exception e) {
			
			e.printStackTrace();
			
		}
		return (Session) sessionFactory.openSession();
	}

Mas quando o MetadataSource vai ser instanciado ai acontece o erro:

java.lang.ClassNotFoundException: org.hibernate.util.DTDEntityResolver

Só que esta classe pelo o que eu pesquisei não está mais no pacote da versão do 4.1.8.Final.

7 Respostas

anderson.bonavides

Bom pessoal, pesquisando eu descobri que a biblioteca hibernate-annotations já foi incluída no hibernate-core, por isso não é mais necessário a sua declaração e realmente houve um avanço, porém ainda não tive 100% de sucesso pois estoura uma nova exceção:

Não encontrei esta classe em nenhuma biblioteca do Hibernate, alguém me daria uma dica?

jweibe

anderson.bonavides:
Bom pessoal, pesquisando eu descobri que a biblioteca hibernate-annotations já foi incluída no hibernate-core, por isso não é mais necessário a sua declaração e realmente houve um avanço, porém ainda não tive 100% de sucesso pois estoura uma nova exceção:

Não encontrei esta classe em nenhuma biblioteca do Hibernate, alguém me daria uma dica?

Tenta criar a SessionFactory dessa forma aqui…

Configuration cfg = new Configuration().configure();  
ServiceRegistryBuilder serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties());  
ServiceRegistry registry = serviceRegistry.buildServiceRegistry();  
SessionFactory factory = cfg.buildSessionFactory(registry);
anderson.bonavides

Mas terá que setar na instância de cfg as configurações do xml, correto?

jweibe

Você já não tem um hibernate.cfg.xml na raiz do seu projeto? se sim não precisa adicionar mais nada, ele vai ler as configurações que você
descreveu la. Caso contrario você pode configurar pelo objeto cfg

anderson.bonavides

Ele não está na raiz, está em um diretório específico. “/PROJETO/recursos/hibernate/hibernate.cfg.xml”

jweibe

anderson.bonavides:
Ele não está na raiz, está em um diretório específico. “/PROJETO/recursos/hibernate/hibernate.cfg.xml”

Tenta fazer assim:

Configuration cfg = new Configuration().configure(new File("/PROJETO/recursos/hibernate/hibernate.cfg.xml"));
ou
Configuration cfg = new Configuration().configure("/PROJETO/recursos/hibernate/hibernate.cfg.xml");
anderson.bonavides

jweibe:
anderson.bonavides:
Ele não está na raiz, está em um diretório específico. “/PROJETO/recursos/hibernate/hibernate.cfg.xml”

Tenta fazer assim:

Configuration cfg = new Configuration().configure(new File("/PROJETO/recursos/hibernate/hibernate.cfg.xml")); ou Configuration cfg = new Configuration().configure("/PROJETO/recursos/hibernate/hibernate.cfg.xml");

Agora esta resolvido, obrigado, mas ainda encontrei um outro erro que segundo a documentação o cabeçalho do hibernate.cfg mudou, mas deu erro então retornei o xml para a versão do 3.5.6 e funcionou.

Grato!

Criado 14 de novembro de 2012
Ultima resposta 16 de nov. de 2012
Respostas 7
Participantes 2