8
respostas

Problema para criar a tabela Conta (mesmo após as correções sugeridas nas perguntas anteriores)

Após rodar o código após as mudanças vistas nas respostas das dúvidas neste fórum, meu código ainda não funciona. Alguém saberia dizer o motivo?

Segue o código:

<persistence-unit name="alura">
    <provider>org.hibernate.jpa.HibernatePersistence</provider>
    <class>br.com.alura.jpa.modelo.Conta</class>

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

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

        <property name="hibernate.hbm2ddl.auto" value="update" />

    </properties>
</persistence-unit>

Classe do modelo Conta:

package br.com.alura.jpa.modelo;

import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id;

@Entity public class Conta { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private Integer agencia; private Integer numero; private String titular; private Double saldo;

public Long getId() {
    return id;
}
public void setId(Long id) {
    this.id = id;
}
public Integer getAgencia() {
    return agencia;
}
public void setAgencia(Integer agencia) {
    this.agencia = agencia;
}
public Integer getNumero() {
    return numero;
}
public void setNumero(Integer numero) {
    this.numero = numero;
}
public String getTitular() {
    return titular;
}
public void setTitular(String titular) {
    this.titular = titular;
}
public Double getSaldo() {
    return saldo;
}
public void setSaldo(Double saldo) {
    this.saldo = saldo;
}

}

Classe de teste:

package br.com.alura.jpa.testes;

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

public class TesteCriaTabelas {

public static void main(String[] args) {

    EntityManagerFactory emf = Persistence.createEntityManagerFactory("alura");
    EntityManager createEntityManager = emf.createEntityManager();
    emf.close();
}

}

8 respostas

Erro apresentado no console:

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named alura at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at br.com.alura.jpa.testes.TesteCriaTabelas.main(TesteCriaTabelas.java:10)

Seu Persistence.xml se encontra no diretório: src-->META-INF-->persistence.xml?

Sim, lá mesmo. Está muito estranho esse erro.

Conseguiu resolver? estou com o mesmo problema rs

Ainda não Matheus...rsrs. Não tem nada de errado no código e não funciona...

Mattheus, boa noite.

Resolvi o problema. Era algum erro que existia dentro do meu persistence.xml. Primeiro verifique se você foi lá no console do mysql ou mariaDB e criou o banco de dados alura_jpa, e depois verifique se o seu persistence.xml no bloco de persistence-unit está da seguinte forma:

<persistence-unit name="alura">
    <class>br.com.alura.jpa.modelo.Conta</class>
    <properties>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/alura_jpa?serverTimezone=UTC" />
        <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.dialect" value="org.hibernate.dialect.MariaDBDialect"/>
        <property name="hibernate.show_sql" value="false"/>
        <property name="hibernate.format_sql" value="true"/>
    </properties>
</persistence-unit>

Thiago, Bom dia

Achei aonde o problema era, graças a sua ajuda também duas linhas dentro do meu Persistense.xml estava diferente do que você mandou eu alterei e consegui criar as tabelas normal rs no lugar de alura estava contas; e o value estava como true .

Ao alterar esses dois funcionou rs

Obrigado pela ajuda meu amigo! Ótimo estudos para você, e um ótimo final de semana

<persistence-unit name="alura">

   <property name="hibernate.show_sql" value="false"/>

Grande abraço Matheus! Obrigado!