Estou com uma aplicação que utiliza webwork e hibernate. Após receber os dados do formulário e setar outros valores em algumas propriedades não são persistidos os campos que são alterados no controlador.
segue o código:
[code]UsuarioDAO daoUsuario = DAOFactory.getDefaultInstance().getUsuarioDAO();
GenericDAOFactory fac2 = new GenericDAOFactory(
Perfil.class, GenericDAOFactory.HIBERNATE);
DAO daoPerfil = fac2.getGenericDAO();
GenericDAOFactory<Municipio> fac3 = new GenericDAOFactory<Municipio>(
Municipio.class, GenericDAOFactory.HIBERNATE);
DAO<Municipio> daoMunicipio = fac3.getGenericDAO();
Usuario tmp = daoUsuario.carrega(usuario.getLogin());
String result = "success";
// Esse login j� existe!!!
if (tmp != null) {
erro = "O login que você escolheu já existe. Por favor, retorne à etapa de cadastramento e escolha outro login.";
return "erro_login_existente";
}
if (!usuario.getSenha().equalsIgnoreCase(senha2)) {
erro = "A senha que você forneceu não confere com a senha confirmada. Por favor, volte para seu cadastro, digite novamente sua senha e confirme corretamente.";
return "erro_insercao";
}
usuario.setSenha(getDigest(usuario.getSenha().toLowerCase()));
usuario.setNivel(new Nivel());
endereco.setEstado(Estado.valueOf(estado));
endereco.setMunicipio(daoMunicipio.carrega(new Long(municipio)));
/*
* Coloca o perfil desejado no campo de observação para que quando o
* usuário for liberado seja verificado se é possível ou não o usuário
* ter este perfil
*/
if (!perfil.equals("-1")) {
usuario.setObservacao(usuario.getObservacao()
+ " perfil desejado: "
+ daoPerfil.carrega(new Long(perfil)).getNome());
result = "configura_nivel";
}
/*
* Busca o perfil pendente (da AdminServlet.PENDENTES e grava o usuario
* com esse perfil
*/
List<Criterion> crits = new LinkedList<Criterion>();
crits.add(Expression.ilike("nome", AdminServlet.PENDENTES));
List<Perfil> perfis = daoPerfil.listarSemPermissao(crits);
Set<Perfil> perfisSet = new HashSet<Perfil>();
if (perfis.size() > 0) {
perfisSet.add(perfis.get(0));
usuario.setPerfis(perfisSet);
}
usuario.setEndereco(endereco);
usuario.setAtivo(false);
id = daoUsuario.salva(usuario).longValue();
return result;[/code]
penso eu que o problema esta sendo na injeção de independencia… entretanto posso estar errado. Segue o código da bean de persistência o campo que não está sendo salvo é o de observação.