Problema injeção de independencia no webwork

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&ecirc; escolheu j&aacute; existe. Por favor, retorne &agrave; etapa de cadastramento e escolha outro login.";
		return "erro_login_existente";
	}

	if (!usuario.getSenha().equalsIgnoreCase(senha2)) {
		erro = "A senha que voc&ecirc; forneceu n&atilde;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]

por favor me ajudem se puderem…

Perae :idea:

O seu problems é a injeção de alguma dependência, como um bean, datasource, etc ? Ou é efetivamente na persistência do objeto ?

Se for na persistência, me responde um a coisa, você tá fazendo algum controle de transação ?

[]´s

Rafael,

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.

[code]package br.gov.inca.rhcnet;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratorType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.persistence.UniqueConstraint;

import org.apache.log4j.Logger;

import br.gov.inca.rhcnet.nivel.Nivel;
import br.gov.inca.rhcnet.nivel.filtro.FiltroDeNivel;
import br.gov.inca.rhcnet.seguranca.Perfil;

/**

  • Representa um usu�rio do sistema

*/
@Entity
@Table(uniqueConstraints = @UniqueConstraint(columnNames = { “login” }))
@FiltroDeNivel(estadual=“endereco.estado”, municipal=“endereco.municipio”,institucional=“nivel”, nacional="")
public class Usuario {

private long id;

private boolean ativo = true;

private boolean apagavel = true;

private boolean editavel = true;

private String login = "";

private String senha = "";

private String nome = "";

private String email = "";

private String ddd = "";

private String telefone = "";

private String dddCel = "";

private String celular = "";

private Nivel nivel = new Nivel();

private Endereco endereco = new Endereco();

private Logger log = Logger.getLogger(Usuario.class);

private String observacao = "";


/**
 * <p>
 * Conjunto de Perfis deste usu�rio
 * </p>
 * 
 */
private Set<Perfil> perfis = new HashSet<Perfil>();

/**
 * <p>
 * Construtor padr�o usado pela camada de persist�ncia
 * </p>
 * 
 * N�o deve ser usado para outro fim, por isso n�o � p�blico.
 */
public Usuario() {
}

public Usuario(String login, String senha) {
    this.login = login;
    this.senha = senha;
}

public Usuario(String login, String senha, String nome) {
    this(login, senha);
    this.nome = nome;
}

@Id(generate = GeneratorType.AUTO)
public long getId() {
    return id;
}

public void setId(long id) {
    this.id = id;
}

public String getLogin() {
    return login;
}

public void setLogin(String login) {
    this.login = login;
}

public String getSenha() {
    return senha;
}

public void setSenha(String senha) {
    this.senha = senha;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

@OneToOne(cascade=CascadeType.ALL)
public Endereco getEndereco() {
    return endereco;
}

public void setEndereco(Endereco endereco) {
    this.endereco = endereco;
}

// @todo Rever o CascadeType
@ManyToMany(fetch=FetchType.LAZY)
// (cascade = CascadeType.ALL)
public Set<Perfil> getPerfis() {
    return perfis;
}

public void setPerfis(Set<Perfil> perfis) {
    this.perfis = perfis;
}

public void adicionaPerfil(Perfil perfil) {
    this.perfis.add(perfil);
}



/**
 * Dois usu�rios s�o considerados iguais quando possu�rem o mesmo login
 * (username).
 */
@Override
public boolean equals(Object obj) {
    if (obj instanceof Usuario) {
        Usuario usuario = (Usuario) obj;
        return this.login.equals(usuario.getLogin());
    }

    // nem � um Usuario!
    return false;
}

/**
 * Para a gera��o do hashCode � considerado apenas o login.
 */
@Override
public int hashCode() {
    return login.hashCode();
}

public Boolean isAtivo() {
	return ativo;
}

public void setAtivo(Boolean ativo) {
	this.ativo = ativo;
}

@OneToOne(cascade = CascadeType.ALL)
public Nivel getNivel() {
	return nivel;
}

public void setNivel(Nivel nivel) {
	this.nivel = nivel;
}

public void setApagavel(boolean b){
	apagavel = b;
}

public boolean isApagavel(){
	return apagavel;
}

public boolean isEditavel() {
	return editavel;
}

public void setEditavel(boolean editavel) {
	this.editavel = editavel;
}

public String getCelular() {
	return celular;
}

public void setCelular(String celular) {
	this.celular = celular;
}

public String getDdd() {
	return ddd;
}

public void setDdd(String ddd) {
	this.ddd = ddd;
}

public String getDddCel() {
	return dddCel;
}

public void setDddCel(String dddCel) {
	this.dddCel = dddCel;
}

public String getTelefone() {
	return telefone;
}

public void setTelefone(String telefone) {
	this.telefone = telefone;
}

public String toString(){
	return nome;
}

public String getObservacao() {
	return observacao;
}

public void setObservacao(String observacao) {
	this.observacao = observacao;
}

}
[/code]