[RESOLVIDO] configuração arquivo persistence.xml oracle

19 respostas
D

Boa noite galera,

estou com problemas para configurar o arquivo persistence.xml para o banco oracle, minha configuracao esta assim:

<?xml version="1.0" encoding="UTF-8"?>
<!-- example of a default persistence.xml -->
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
             version="1.0">
    <persistence-unit name="controleFinancas">
    	<class>br.com.financas.modelo.Conta</class>
        <properties>
            <property name="dialect" value="org.hibernate.dialect.Oracle10gDialect"/> 
            <property name="connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
            <property name="hibernate.connection.username" value="teste"/>
            <property name="hibernate.connection.password" value="123456"/>
			<property name="hibernate.connection.url" value="jdbc:oracle:thin://localhost:1521/XE"/> 
            <property name="hibernate.hbm2ddl.auto" value="update"/>  

            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>

        </properties>
    </persistence-unit>
</persistence>

ai da o erro:

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named controleFinancas
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
	at teste.TestaConta.main(TestaConta.java:16)

estou usando o jar ojdbc14_g.jar da oracle

valeu :slight_smile:

19 Respostas

E

Caso esteja usando o JPA2.0, altera seu cabeçalho para isso:

<?xml version="1.0" encoding="ISO-8859-1"?>
<persistence version="2.0"
	xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
E

Altera isso:

Para isso:

ou

D
Edison Martins:
Caso esteja usando o JPA2.0, altera seu cabeçalho para isso:
<?xml version="1.0" encoding="ISO-8859-1"?>
<persistence version="2.0"
	xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
Edison Martins:
Altera isso:
<property name="hibernate.connection.url" value="jdbc:oracle:thin://localhost:1521/XE"/>
Para isso:
<property name="hibernate.connection.url" value="jdbc:oracle:thin:localhost:1521/XE"/>

ou

<property name="hibernate.connection.url" value="jdbc:oracle:thin:127.0.0.1:1521/XE"/>

cara eu to usando o JPA 2 msm, fiz as alteracoes mas o erro continua, agora o codigo fico assim:

<?xml version="1.0" encoding="ISO-8859-1"?>  
    <persistence version="2.0"  
        xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
        
    <persistence-unit name="controleFinancVas">
    	<class>br.com.financas.modelo.Conta</class>
        <properties>
            <property name="dialect" value="org.hibernate.dialect.Oracle10gDialect"/> 
            <property name="connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
            <property name="hibernate.connection.username" value="teste"/>
            <property name="hibernate.connection.password" value="123456"/>
			<property name="hibernate.connection.url" value="jdbc:oracle:thin:localhost:1521/XE"/> 
			<property name="hibernate.hbm2ddl.auto" value="update"/>  

            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>

        </properties>
    </persistence-unit>
</persistence>

teria mais alguma ideia ou algum arquivo persistece.xml como exemplo?
valeu

D

Eu não uso assim

<property name="hibernate.connection.url" value="jdbc:oracle:thin:localhost:1521/XE"/>

Prefiro desta forma

<property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:1521:banco_de_dados"/>

Outra coisa, onde você colocou o arquivo persistence.xml?
O nome do mesmo está todo escrito em letras minúsculas?

D

drsmachado:
Eu não uso assim

<property name="hibernate.connection.url" value="jdbc:oracle:thin:localhost:1521/XE"/>

Prefiro desta forma

<property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:1521:banco_de_dados"/>

Outra coisa, onde você colocou o arquivo persistence.xml?
O nome do mesmo está todo escrito em letras minúsculas?

fiz a alteracao mas tb nao resolveu, eu criei a pasta src/META-INF e coloquei o xml la, ele ta em letras minisculas, mas o erro continua igual :frowning:

D

Isso está estranho.
O erro indica que a unidade de persistência não foi encontrada.
Normalmente isto está associado a erros na nomenclatura ou localização do arquivo persistence.xml.
Teu projeto é web ou desktop?

D

drsmachado:
Isso está estranho.
O erro indica que a unidade de persistência não foi encontrada.
Normalmente isto está associado a erros na nomenclatura ou localização do arquivo persistence.xml.
Teu projeto é web ou desktop?

descktop, criei como java project normal (nao web).

D

Posta o código que você usa para criar o EntityManagerFactory.

D
package br.com.financas.infra;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;


public class JPAUtil {
	public static EntityManagerFactory entityManagerFactory=
		Persistence.createEntityManagerFactory("controlefinancas");
	
	public static EntityManager getEntityManager (){
		return entityManagerFactory.createEntityManager();
	}
}

é esse aki

D

Lembra que Java é case sensitive?

Persistence.createEntityManagerFactory("controlefinancas");
E

<persistence-unit name="controleFinancas">

São coisas distintas…
Eu sempre prefiro usar todas as letras em minúsuclo no nome da PU… Mais fácil gerenciar.

D

drsmachado:
Lembra que Java é case sensitive?

Persistence.createEntityManagerFactory("controlefinancas");
E

<persistence-unit name="controleFinancas">

São coisas distintas…
Eu sempre prefiro usar todas as letras em minúsuclo no nome da PU… Mais fácil gerenciar.

eu arrumei esse erro, na verdade eu ja tinha arrumado (ctrl+c ctrl+v) pra nao errar, mas o erro continua, vc teria algum persistence xml configurado para o oracle de exemplo?

I

Lá no XML vc escreveu assim:

controleFinancVas

D

dessu:
drsmachado:
Lembra que Java é case sensitive?

Persistence.createEntityManagerFactory("controlefinancas");
E

<persistence-unit name="controleFinancas">

São coisas distintas…
Eu sempre prefiro usar todas as letras em minúsuclo no nome da PU… Mais fácil gerenciar.

eu arrumei esse erro, na verdade eu ja tinha arrumado (ctrl+c ctrl+v) pra nao errar, mas o erro continua, vc teria algum persistence xml configurado para o oracle de exemplo?


Entenda, o problema não está na configuração para o Oracle, o problema é que o arquivo ou a Persistence Unit dele não estão sendo lidos.

D

igor_ks:
Lá no XML vc escreveu assim:

controleFinancVas

esse eu arrumei, vou colocar o codigo todo pra vcs darem uma olhada:

persistence.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>    
<persistence version="2.0"    
     xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
        
    <persistence-unit name="controlefinancas">
    	<class>br.com.financas.modelo.Conta</class>
        <properties>
            <property name="dialect" value="org.hibernate.dialect.Oracle10gDialect"/> 
            <property name="connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
            <property name="hibernate.connection.username" value="teste"/>
            <property name="hibernate.connection.password" value="123456"/>
			<property name="hibernate.connection.url" value="jdbc:oracle:thin:localhost:1521/XE"/> 
			<property name="hibernate.hbm2ddl.auto" value="update"/>  

            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>

        </properties>
    </persistence-unit>
</persistence>

JPAUtil:

package br.com.financas.infra;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;


public class JPAUtil {
	public static EntityManagerFactory entityManagerFactory=
		Persistence.createEntityManagerFactory("controlefinancas");
	
	public static EntityManager getEntityManager (){
		return entityManagerFactory.createEntityManager();
	}
}

erro:

Exception in thread "main" java.lang.ExceptionInInitializerError
	at teste.TestaConta.main(TestaConta.java:13)
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named controlefinancas
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
	at br.com.financas.infra.JPAUtil.<clinit>(JPAUtil.java:10)
	... 1 more

ta assim agora, mas nao ta dando certo, o persistence.xml esta no src/META-INF

D

Camarada, repito, o nome está diferente. Um está camelCase e outro totalmente minúsculo.

D

tem algum outro lugar que eu possa colocar o persitence.xml forao META-INF?

D

eu corrigi Persistence.createEntityManagerFactory("controlefinancas");

mas o erro ta igual

D

Galera, depois das devidas correções feitas com a ajuda de vcs, verifiquei que ainda estava faltando o jar hibernate-entitymanager-4.2.3.Final, apos efetuar a correções e adicionar o jar resolveu o problema, valeu :slight_smile:

A

Da um clear no projeto, se estiver usando eclipse vá em Project -> Clean… Abraço

Criado 8 de julho de 2013
Ultima resposta 26 de ago. de 2015
Respostas 19
Participantes 5