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

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:

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">

Altera isso:

Para isso:

ou

[quote=Edison Martins]Caso esteja usando o JPA2.0, altera seu cabeçalho para isso:

[code]

<?xml version="1.0" encoding="ISO-8859-1"?>


[/code][/quote]

[quote=Edison Martins]Altera isso:

Para isso:

ou

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

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?

[quote=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?[/quote]

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:

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?

[quote=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?[/quote]

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

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

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

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.

[quote=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.[/quote]

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?

Lá no XML vc escreveu assim:

controleFinancVas

[quote=dessu][quote=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.[/quote]

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?[/quote]
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.

[quote=igor_ks]Lá no XML vc escreveu assim:

controleFinancVas[/quote]

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

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

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

eu corrigi Persistence.createEntityManagerFactory("controlefinancas");

mas o erro ta igual

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:

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