Consegui compreender a explicação sim! hahaha
Então pessoal, eu creio que já estou fazendo isso, olhe meu método que carrega o usuário para preencher os campos do formulário:
public void carregaUsuario() {
usuario = usuarioDAO.buscaPorId(usuario.getId());
if (usuario == null) {
usuario = new Usuario();
}
}
Ou seja, eu levo todas as informações da entidade carregadas.
Método para salvar / atualizar:
@Transactional
public void salvarUsuario() {
this.usuario.setCategoria(categoriaDAO.buscaPorId(this.usuario.getCategoria().getId()));
if (usuario.getId() == null) {
usuarioDAO.adiciona(usuario);
} else {
System.out.println(context);
usuarioDAO.atualiza(usuario);
Usuario uLogado = UsuarioLogado.buscaUsuarioLogado(context);
// Se o usuário estiver alterando o usuário da sessão, este será atualizado
if (uLogado.getId() == usuario.getId()) {
context.getExternalContext().getSessionMap().put("usuarioLogado", usuarioDAO.buscaPorId(usuario.getId()));
}
}
usuario = new Usuario();
usuarios = usuarioDAO.listaTodos();
}
Eu comecei a achar esquisito porque fui tentar atualizar um usuário agorinha e vi que ele criou outro, tive que colocar um input hidden pro Id do mesmo, ai fui investigar e vi que ele "perdia" todas as informações do usuário, so fica o que existe no formulário mesmo.
E isso começou a acontecer agora, que eu comecei a tentar usar o escopo de requisição do Spring kkkkk
Eu tô pra desistir de utilizar o Spring e passar a usar somente o CDI pra injetar as dependências :/