O CRUD está funcionando, menos na hora de editar. o que eu faço para editar?
package br.com.projeto.controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.projeto.model.Cliente;
import br.com.projeto.service.ServiceCliente;
@WebServlet("/editaCliente")
public class EditarClienteServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
private ServiceCliente serviceCliente;
@Override
public void init() throws ServletException {
this.serviceCliente = new ServiceCliente();
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Long id = Long.parseLong(req.getParameter("id"));
Cliente cliente = new Cliente();
if(id.toString() == null) {
this.serviceCliente.save(cliente);
}
else {
cliente.setId(id); this.serviceCliente.update(cliente);
}
Cliente edita = this.serviceCliente.getOne(id);
RequestDispatcher disp = req.getRequestDispatcher("index.jsp");
req.setAttribute("cliente", edita);
disp.forward(req, resp);
}
}
Class repository
public class RepositoryCliente {
private static EntityManagerFactory factory;
static {
factory = Persistence.createEntityManagerFactory("clientes");
}
private EntityManager em;
public Cliente save(Cliente cliente) {
this.em = factory.createEntityManager(); // conexao com o banco
em.getTransaction().begin();
em.persist(cliente);
em.getTransaction().commit();
em.close();
return cliente;
}
@SuppressWarnings("unchecked")
public List<Cliente> findAll() {
this.em = factory.createEntityManager();
em.getTransaction().begin();
List<Cliente> clientes = em.createQuery("select u from Cliente u").getResultList();
em.close();
return clientes;
}
public void remove(Long id) {
this.em = factory.createEntityManager();
em.getTransaction().begin();
Cliente remove = em.find(Cliente.class, id);
em.remove(remove);
em.getTransaction().commit();
em.close();
}
public void update(Cliente cliente) {
this.em = factory.createEntityManager();
em.getTransaction().begin();
em.merge(cliente);
em.getTransaction().commit();
em.close();
}
public Cliente getOne(Long id) {
this.em = factory.createEntityManager();
em.getTransaction().begin();
Cliente find = em.find(Cliente.class, id);
em.close();
return find;
}
}
