Olá, estou começando a desenvolvedor com EJB. Eu criei uma entidade, um ManagedBean e um EJB. Consigo inserir e listar dados do banco, mas o meu método de deletar não dá erro, porém não deleta os dados do banco.
Entidade:
package br.com.teste.entidade;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Cliente {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@Column
private String nome;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
ManagedBean:
package br.com.teste.managedbean;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import br.com.teste.ejb.ClienteBean;
import br.com.teste.entidade.Cliente;
@ManagedBean
@ViewScoped
public class ClienteMB {
private Cliente cliente = new Cliente();
private List<Cliente> lstCliente = new ArrayList<Cliente>();
public String incluirCliente(){
InitialContext ini;
try {
ini = new InitialContext();
ClienteBean clienteBean = (ClienteBean)ini.lookup("java:module/ClienteBean");
clienteBean.salvar(cliente);
cliente = new Cliente();
lstCliente = clienteBean.buscarCliente();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public String deletarCliente(){
InitialContext ini;
try {
ini = new InitialContext();
ClienteBean clienteBean = (ClienteBean)ini.lookup("java:module/ClienteBean");
clienteBean.deletar(cliente);
cliente = new Cliente();
lstCliente = clienteBean.buscarCliente();
} catch (NamingException e) {
e.printStackTrace();
}
return null;
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public List<Cliente> getLstCliente() {
return lstCliente;
}
public void setLstCliente(List<Cliente> lstCliente) {
this.lstCliente = lstCliente;
}
}
EJB:
package br.com.teste.ejb;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import br.com.teste.entidade.Cliente;
@Stateless
public class ClienteBean {
@PersistenceContext
EntityManager em;
public void salvar(Cliente cliente) {
em.persist(cliente);
}
public void deletar(Cliente cliente) {
em.remove(cliente);
}
public List<Cliente> buscarCliente(){
return em.createQuery("FROM Cliente").getResultList();
}
}
Página:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head><title>Minha Aplicação</title></h:head>
<h:body>
<h:form>
<h:outputLabel value="Nome: " for="nome" />
<h:inputText id="nome" value="#{clienteMB.cliente.nome}"
required="true" requiredMessage="Campo obrigatório"
maxlength="200"/>
<h:commandButton value="Salvar" action="#{clienteMB.incluirCliente()}" />
</h:form>
<h:dataTable id="tabela" value="#{clienteMB.lstCliente}" var="item">
<h:column>
<f:facet name="header">
<h:outputText value="ID" />
</f:facet>
<h:outputText value="#{item.id}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{item.nome}"/>
</h:column>
<h:column>
<h:commandButton value="Deletar"
action="#{clienteMB.deletarCliente()}" />
</h:column>
</h:dataTable>
</h:body>
</html>
