7
respostas

Arquivo persistence.xml

Ao criar o meu arquivo persistence.xml, o eclipse mostra duas mensagens:

Mensagem de erro:

The persistence.xml file does not have supported content for this JPA platform.

Mensagem de warning:

No connection specified for project. No database-specific validation will be performed.

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<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="livraria">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>

        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/livrariadb" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="" />

            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
        </properties>

    </persistence-unit>
</persiste
7 respostas

Oi José, tudo bem ?

Cara faz um favor ? Confere um detalhizinho no persistence.xml, no fim dele está assim :

</persistence>

ou assim :

</persistence

Outra coisa que é bacana a gente dar uma revisada é o seguinte, qual é a estrutura do seu projeto ? Maven, WebDynamicProject ?

No seu projeto, quando você o configurou você colocou qual versão da JPA ?

Olá, meu persistence está assim:

</persistence>

Estou utilizando o maven, segue meu pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>br.com.alura</groupId>
    <artifactId>livraria</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>

    <build>
        <finalName>livraria</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <inherited>true</inherited>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-servlet-initializer</artifactId>
            <version>3.0.19.Final</version>
        </dependency>

        <dependency>
            <groupId>org.jboss.weld.servlet</groupId>
            <artifactId>weld-servlet-core</artifactId>
            <version>2.4.1.Final</version>
        </dependency>

        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-cdi</artifactId>
            <version>3.0.19.Final</version>
        </dependency>

        <!-- Hibernate -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.5</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.2.4.Final</version>
            <exclusions>
                <exclusion>
                    <groupId>org.jboss.logging</groupId>
                    <artifactId>jboss-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
            <version>3.3.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>3.5.6-Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.2.4.Final</version>
        </dependency>

    </dependencies>

</project>

Fiz algumas coisas aqui e parece que o eclipse voltou a reconhecer meu persistense.xml. Em "properties" do meu projeto, fui em JPA e setei "Platform: Generic 2.0" e voltou a ser reconhecido.

Entretanto ainda não estou conseguindo consultar a base de dados.

Segue meu DAO:

public List<Aplicacao> listar(Integer pagina, Integer max){
        int inicio = (pagina * max) - max;

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("livraria");
        EntityManager em = emf.createEntityManager();

        TypedQuery<Aplicacao> query = em.createQuery(
                  " select a from Aplicacao a ", Aplicacao.class);

        List<Aplicacao> aplicacoes = query.getResultList();

        return aplicacoes;    
    }

Recebo o seguinte erro:

GRAVE: Servlet.service() for servlet [br.com.alura.BaseApplication] in context with path [/livraria] threw exception
org.jboss.resteasy.spi.UnhandledException: javax.persistence.PersistenceException: No Persistence provider for EntityManager named livraria

Você tem a lib correta ? O database existe ?

Qual seria a lib correta? Estou usando o maven, mandei meu pom ai em cima.

O banco de dados existe sim. Mas o erro que é não existe um Persistence provider de nome livraria. De alguma forma ele não está enxergando as minhas configurações no arquivo persistence.xml

Eu li algo sobre essa última versão do hibernate que estou usando estar bugada, ou que o provider do persistence.xml não estar correto para essa nova versão.

<provider>org.hibernate.ejb.HibernatePersistence</provider>

O usuário e senha estão corretos?

user" value="root" password" value=""

O banco existe?

Minhas lembranças podem me trair, mas .. Quando algum problema ocorre a iniciar o EntityManagerFactory, dentre outras msgs, o log diz algo parecido com "No Persistence provider for EntityManager named xxxx"

Acho que tu esqueceu de colocar a porta do mysql.

property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3308/livrariadb" />

Se estiver rodando na porta padrão do mysql, é a 3306 .

<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/livrariadb" />