Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

ERRO EM INSERIR OS ARQUIVOS PELA JPA

Olá, meu código não tem nenhum erro, ele roda e dá as mensagens, mas ao tentar consultar via SELECT no banco de dados ou no próprio command line, a tabela PRODUTOS está vazia, nenhum item é inserido nela.

MEU PERSISTENCE

<persistence-unit name="loja"
    transaction-type="RESOURCE_LOCAL">
    <properties>
        <property name="javax.persistence.jdbc.driver"
            value="org.h2.Driver" />
        <property name="javax.persistence.jdbc.url"
            value="jdbc:h2:mem:loja" />
        <property name="javax.persistence.jdbc.user" value="sa" />
        <property name="javax.persistence.jdbc.password" value="" />

        <property name="hibernate.dialect"
            value="org.hibernate.dialect.H2Dialect" />
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.hbm2ddl.auto" value="update" />
    </properties>
</persistence-unit>

MEU CADASTRODEPRODUTO

package br.com.alura.loja.testes;

import java.math.BigDecimal;

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

import br.com.alura.loja.modelo.Produto;

public class CadastroDeProduto {

public static void main(String[] args) {

    Produto produto = new Produto();
    produto.setNome("CELULAR");
    produto.setDescricao("IPHONE 14");
    produto.setPreco(new BigDecimal("800"));

    EntityManagerFactory factory = Persistence.createEntityManagerFactory("loja");
    EntityManager em = factory.createEntityManager();

    em.getTransaction().begin();
    em.persist(produto);
    em.getTransaction().commit();
    em.close();

}

}

MINHA CLASSE PRODUTO

package br.com.alura.loja.modelo;

import java.math.BigDecimal;

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

@Entity @Table(name = "Produtos") public class Produto {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private String descricao;
private BigDecimal preco;

*getters and setters omitidos*
4 respostas

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

MEU LOG MOSTRANDO QUE FOI CRIADA A TABELA E INSERIDO OS PRODUTOS E MEU SELECT QUE NÃO ACHAInsira aqui a descrição dessa imagem para ajudar na acessibilidade

Consegui resolver o problema após procurar aqui no fórum e gostaria de ressaltar dois pontos: durante a aula em PERSISTENCE o código em aula usado é

 **<property name="javax.persistence.jdbc.driver"
        value="org.h2.Driver" />
    <property name="javax.persistence.jdbc.url"
        value="jdbc:h2:mem:loja" />**

Olhando o código dos meus colegas no fórum, percebi que eles usam diferente

            **<property name="javax.persistence.jdbc.driver"
            value="com.mysql.jdbc.Driver" />
        <property name="javax.persistence.jdbc.url"
            value="jdbc:mysql://localhost/loja_virtual" />**

E o POM.XML também é diferente dos colegas do que feito em aula, exemplo aula NÃO TEM o seguinte dependency:

**<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.30</version>
    </dependency>**

Portando, após alterar seguindo meus colegas, meu código funcionou. Minha dúvida é, porque esse conteúdo não está nas aulas? Até voltei o conteúdo estudado pensando ter deixado algo de fora, mas o código das outras pessoas é diferente do professor, não sei que aulas eles assistiram mas quero acesso ao conteúdo certo que ele não mostra.

solução!

Oi Gabriela,

O problema é que no curso eu utilizei o banco de dados H2(que é um banco de dados em memória) e não o MySQL.

E no seu projeto você havia configurado para também utilizar o H2, mas estava tentando consultar os registros no terminal do MYSQL, e por isso a tabela estava vazia.

Bons estudos!