Erro ao tentar salvar Validation Error: Value is not valid

0 respostas
J

Pessoal, boa noite…
Estou com um problema de uma classe(Usuario) que tento salvar, mas acontece o erro: nomeFuncionario: Validation Error: Value is not Valid…
Então como algumas pesquisas, acabei encontrando uma no qual dizia para mim sobrescrever os metodos equals() e hashCode…
Sobresceri mas continua dando o mesmo erro… o que pode ser?
Segue minhas classes…

Converter

public class Converter implements javax.faces.convert.Converter{
	
	public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
		System.out.println(value);
		Funcionario funcionario = new Funcionario();
		try {
			List<Funcionario> funcionarios = FuncionarioDAO.getInstance().consultarPeloIdPessoa(value);
			for (Funcionario func : funcionarios) {
				if (func.getIdPessoa().trim().equals(value)) {
					funcionario = func;
					break;
				}
			}
			return funcionario;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	public String getAsString(FacesContext arg0, UIComponent arg1, Object value) {
		String retorno = "";
		System.out.println(value);
		try {
			Funcionario funcionario = (Funcionario) value;
			retorno = funcionario.getIdPessoa().toString();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return retorno;
	}
	
	
}

Funcionario

package entidades;

import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;

@NamedQueries({
	@NamedQuery(name=Funcionario.CONSULTAR_FUNCIONARIOS , query=
			"from Funcionario funcionario " +
			"where funcionario.nome like (?)"),
			
	@NamedQuery(name=Funcionario.CONSUTAR_FUNCIONARIOS_SEM_LOGIN, query=
		"from Funcionario funcionario"
		),
	@NamedQuery(name=Funcionario.CONSULTAR_PELO_ID_PESSOA, query="from Funcionario funcionario" +
			" where funcionario.idPessoa = ?")
	
})

@Entity 
public class Funcionario extends Pessoa{
	
	public static final String CONSULTAR_FUNCIONARIOS = "consultarFuncionarios";
	public static final String CONSUTAR_FUNCIONARIOS_SEM_LOGIN = "consultarFuncionariosSemLogin";
	public static final String CONSULTAR_PELO_ID_PESSOA = "consultarPeloIdPessoa";
	
	public Funcionario() {}
	
	private String idFuncionario;
	
	private String cargo;
	
	@OneToOne(mappedBy="funcionario")
	private Usuario usuario;


	@Override
	public int hashCode() {
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result + ((cargo == null) ? 0 : cargo.hashCode());
		result = prime * result
				+ ((idFuncionario == null) ? 0 : idFuncionario.hashCode());
		result = prime * result + ((usuario == null) ? 0 : usuario.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		Funcionario other = (Funcionario) obj;
		if (cargo == null) {
			if (other.cargo != null)
				return false;
		} else if (!cargo.equals(other.cargo))
			return false;
		if (idFuncionario == null) {
			if (other.idFuncionario != null)
				return false;
		} else if (!idFuncionario.equals(other.idFuncionario))
			return false;
		if (usuario == null) {
			if (other.usuario != null)
				return false;
		} else if (!usuario.equals(other.usuario))
			return false;
		return true;
	}
	

	
}

Pessoa

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(uniqueConstraints={@UniqueConstraint(columnNames="cpf")})
public class Pessoa {
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="id")
	private String idPessoa;
	
	@Length(max=128)
	private String nome;
	
	@Length(max=11)
	private String cpf;
	
	private String sexo;
	
	@Temporal(TemporalType.DATE)
	private Date dataNascimento;
	
	@Length(max=128)
	private String logradouro;
	
	@Length(max=64)
	private String bairro;
	
	@Length(max=8)
	private String cep;
	
	@Length(max=128)
	private String cidade;
	
	@Length(max=128)
	private String uf;

Usuario

@Entity
public class Usuario {
	

	@Id
	@GeneratedValue
	private String id;
	
	private String login;
	
	private String senha;
	
	@OneToOne
	private Funcionario funcionario;

Usuario.jsp

<h:outputText value="Nome do Funcionário: "/>
					<h:selectOneMenu converter="converter" id="nomeFuncionario" value="#{usuarioBean.usuario.funcionario}" required="true"> 
 		        	<f:selectItems value="#{usuarioBean.funcionarios}"/> 
   				</h:selectOneMenu>

Colocando um debug no equals do Funcionario, ele para no segundo if… ai tentei colocar este if retornando true, mas ai dá erro de propriedade nula lá no hibernate…

Agradeço qualquer ajuda…
Grato

Criado 29 de julho de 2010
Respostas 0
Participantes 1