Boa noite!
Estou com um problema, quando eu executo mais de uma vez o programa, em vez de só atualizar os dados no mysql, ele cria uma nova linha, como eu posso resolver isso?
Codigo:
package br.com.alura.loja.testes;
import java.math.BigDecimal;
import javax.persistence.EntityManager;
import br.com.alura.dao.CategoriaDao;
import br.com.alura.dao.ClienteDao;
import br.com.alura.dao.PedidoDao;
import br.com.alura.dao.ProdutoDao;
import br.com.alura.loja.modelo.Categoria;
import br.com.alura.loja.modelo.Cliente;
import br.com.alura.loja.modelo.ItemPedido;
import br.com.alura.loja.modelo.Pedido;
import br.com.alura.loja.modelo.Produto;
import br.com.alura.util.JPAUtil;
public class CadastroDePedido {
public static void main(String[] args) {
popularBancoDeDados();
EntityManager em = JPAUtil.getEntityManager();
ProdutoDao produtoDao = new ProdutoDao(em);
ClienteDao clienteDao = new ClienteDao(em);
Produto produto = produtoDao.buscarPorId(1l);
Cliente cliente = clienteDao.buscarPorId(1l);
em.getTransaction().begin();
Pedido pedido = new Pedido(cliente);
pedido.adicionarItem(new ItemPedido(10, pedido, produto));
PedidoDao pedidoDao = new PedidoDao(em);
pedidoDao.cadastrar(pedido);
em.getTransaction().commit();
}
private static void popularBancoDeDados() {
Categoria celulares = new Categoria("CELULARES");
Produto celular = new Produto("Xiaomi Redmi Note 12", "Muito legal", new BigDecimal("1800"), celulares);
Cliente cliente = new Cliente("Rodrigo", "123456");
EntityManager em = JPAUtil.getEntityManager();
ProdutoDao produtoDao = new ProdutoDao(em);
CategoriaDao categoriaDao = new CategoriaDao(em);
ClienteDao clienteDao = new ClienteDao(em);
em.getTransaction().begin();
categoriaDao.cadastrar(celulares);
produtoDao.cadastrar(celular);
clienteDao.cadastrar(cliente);
em.getTransaction().commit();
em.close();
}
}
Persistence:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
<persistence-unit name="loja" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/loja?useTimezone=true;serverTimezone=UTC"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="Almeida@10"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
<property name="hibernate.show.sql" value="true"/>
<property name="hibernate.fomart_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
No persistence já está como 'update' porém mesmo assim não atualiza.