Amigos, tô com dois problemas na minha aplicação. Um é em relação a exclusão e o outro é na alteração.
Se eu mando excluir o primeiro usuário ele exclui sem problema, mas se mando do segundo em diante não dá erro, mas também não exclui.
Na alteração também não dá erro, mas não altera, já nesse caso nem altera o primeiro nem os demais usuários. Estou usando jsf e jpa.
Segue as classes UsuarioRepositorio.java; UsuarioBean.java, CaastroUsuarioService.java e o código que faz a listagem do usuário e o que recebe os dados do usuário , após clicar no botão alterar, para realizar as alterações. Se alguém puder me ajudar, Desde já agradeço.
package com.gugawag.projeto.repositorio;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.gugawag.projeto.modelo.Usuario;
@Stateless
public class UsuarioRepositorio {
@PersistenceContext
private EntityManager em;
public void cadastrarUsuario(Usuario usuario){
em.persist(usuario);
}
public void removerUsuario(Usuario usuario){
usuario = em.merge(usuario);
em.remove(usuario);
}
@SuppressWarnings("unchecked")
public List<Usuario> getUsuarios(){
return em.createQuery("from Usuario").getResultList();
}
public void atualizar(Usuario usuario) {
em.merge(usuario);
}
@SuppressWarnings("unchecked")
public Usuario getUsuarioPorLogin(String login){
List<Usuario> usuarios = em.createQuery("from Usuario u where u.login=:login").setParameter("login", login).getResultList();
if (usuarios != null && usuarios.size()>0){
return usuarios.get(0);
}
return null;
}
}
package com.gugawag.projeto.beans;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import com.gugawag.projeto.modelo.Usuario;
import com.gugawag.projeto.repositorio.UsuarioRepositorio;
import com.gugawag.projeto.service.CadastroUsuarioService;
import com.gugawag.projeto.service.UsuarioJahCadatradoException;
@ManagedBean
@SessionScoped
public class UsuarioBean{
private Usuario usuario;
public UsuarioBean(){
usuario = new Usuario();
}
@EJB
private CadastroUsuarioService usuarioService;
@EJB
private UsuarioRepositorio usuarioRepositorio;
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public List<Usuario> getUsuarios(){
return usuarioService.getUsuarios();
}
public String editar(Usuario usuario){
this.usuario = usuario;
return "editarUsuario";
}
public String editar(){
usuarioRepositorio.atualizar(usuario);
return "listagemUsuarios";
}
public String cadastrar(){
try {
usuarioService.cadastrarUsuario(usuario);
usuario = new Usuario();
Util.acrescentaMensagem("usuario.cadastrosucesso", new String[]{usuario.getLogin()});
} catch (UsuarioJahCadatradoException e) {
Util.acrescentaMensagem("usuario.usuariojahcadastrado", new String[]{usuario.getLogin()});
}
return null;
}
public String remover(Usuario usuario){
usuarioRepositorio.removerUsuario(usuario);
return null;
}
}
package com.gugawag.projeto.service;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import com.gugawag.projeto.modelo.Usuario;
import com.gugawag.projeto.repositorio.UsuarioRepositorio;
@Stateless
public class CadastroUsuarioService {
@EJB
private UsuarioRepositorio usuarioRepositorio;
public void cadastrarUsuario(Usuario usuario) throws UsuarioJahCadatradoException{
Usuario usuarioPesquisado = usuarioRepositorio.getUsuarioPorLogin(usuario.getLogin());
if (usuarioPesquisado != null){
throw new UsuarioJahCadatradoException("Usuario " + usuario + " ja cadastrado!");
}
usuarioRepositorio.cadastrarUsuario(new Usuario(usuario.getLogin(), usuario.getSenha()));
}
public List<Usuario> getUsuarios() {
return usuarioRepositorio.getUsuarios();
}
}
<!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"
xmlns:rich="http://richfaces.org/rich">
<ui:composition template="template.xhtml">
<ui:define name="titulo">Usuários</ui:define>
<ui:define name="principal">
<h:form>
<rich:dataTable value="#{usuarioBean.usuarios}" var="usuario">
<f:facet name="header">
<h:column>Usuários</h:column>
</f:facet>
<rich:column>
<f:facet name="header">Login</f:facet>
<h:outputText value="#{usuario.login}" />
</rich:column>
<rich:column>
<f:facet name="header">Senha</f:facet>
<h:outputText value="#{usuario.senha}" />
</rich:column>
<rich:column>
<h:form>
<h:commandButton style="color:red" value="Remover" action="#{usuarioBean.remover(usuario)}"/>
</h:form>
</rich:column>
<rich:column>
<h:form>
<h:commandButton style="color:red" value="Alterar" action="#{usuarioBean.editar(usuario)}"/>
</h:form>
</rich:column>
</rich:dataTable>
</h:form>
<h:messages />
</ui:define>
</ui:composition>
</html>
<!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"
xmlns:rich="http://richfaces.org/rich">
<ui:composition template="template.xhtml">
<ui:define name="titulo">Edição de Usuário</ui:define>
<ui:define name="principal">
<h:form>
Login: <h:inputText value="#{usuarioBean.usuario.login}" />
Senha: <h:inputText value="#{usuarioBean.usuario.senha}" />
<h:commandButton value="#{msg['usuario.btEditar.nome']}" action="#{usuarioBean.editar()}" />
</h:form>
<h:messages/>
</ui:define>
</ui:composition>
</html>
Removendo usuário
Mensagem do console apos tentar remover o usuario da segunda posição:
20:01:38,932 INFO [stdout] (http–127.0.0.1-8080-4) Hibernate: select usuario0_.codigo as codigo35_, usuario0_.login as login35_, usuario0_.senha as senha35_ from Usuario usuario0_
Mensagem do console apos tentar remover o usuario da primeira posição:
20:02:40,100 INFO [stdout] (http–127.0.0.1-8080-6) Hibernate: select usuario0_.codigo as codigo35_, usuario0_.login as login35_, usuario0_.senha as senha35_ from Usuario usuario0_
20:02:40,109 INFO [stdout] (http–127.0.0.1-8080-6) Hibernate: select usuario0_.codigo as codigo35_0_, usuario0_.login as login35_0_, usuario0_.senha as senha35_0_ from Usuario usuario0_ where usuario0_.codigo=?
20:02:40,112 INFO [stdout] (http–127.0.0.1-8080-6) Hibernate: delete from Usuario where codigo=?
20:02:40,129 INFO [stdout] (http–127.0.0.1-8080-6) Hibernate: select usuario0_.codigo as codigo35_, usuario0_.login as login35_, usuario0_.senha as senha35_ from Usuario usuario0_
Alterando usuário
Mensagem do console após tentar alterar o usuário:
22:30:24,681 INFO [stdout] (http–127.0.0.1-8080-4) Hibernate: select usuario0_.codigo as codigo41_, usuario0_.login as login41_, usuario0_.senha as senha41_ from Usuario usuario0_