Problema com ENUM e Annotations

3 respostas
M

O erro da bem nessa linha quando vou buscar um login ( eu busco o login e já preencho o objeto pai dele.

//criteria.uniqueResult();

public EmpresaBean findByLogin(LoginBean login) {
		EmpresaBean empresa = null;
		try {
			transaction = session.beginTransaction();
			logger.info("Preparando para buscar objeto: [ " + classe.getSimpleName() + " ] de Usuario = [ " + login.getUsuario() + " ]");
			Criteria criteria = session.createCriteria(LoginBean.class);
			criteria.add(Expression.eq("usuario", login.getUsuario()));
			criteria.add(Expression.eq("senha", login.getSenha()));
			//criteria.add(Expression.eq("status", true));
			if(criteria.uniqueResult() != null){
				logger.info("Objeto [ " + classe.getSimpleName() + " ] diferente de nulo");
				login = (LoginBean)criteria.uniqueResult();
				empresa = login.getEmpresa();
			} else {
				logger.info("Objeto [ " + classe.getSimpleName() + " ] é nulo");
			}
			transaction.commit();
			logger.info("Objeto [ " + classe.getSimpleName() + " ] encontrado com sucesso");
		} catch (Exception ex) {
			logger.error("Erro ao erro ao buscar: [ " + classe.getSimpleName() + " ]", ex);
			rollback();
		} finally {
			try {
				if(session.isOpen()){
					logger.error("Finalizando sessao");
					//session.close();
				}
			} catch (HibernateException hex) {
				logger.error("Erro ao finalizar sessao", hex);
			}
		}
		logger.info("Objeto [ " + classe.getSimpleName() + " ] sendo retornado");
		return empresa;
	}

No objeto pai eu declarei:

public class EmpresaBean{
	@Enumerated(EnumType.STRING)
	@Column(name="estado")
	private Estado estado;

	@OneToOne(mappedBy="empresa", fetch=FetchType.EAGER)
	@Cascade(CascadeType.ALL)
	private LoginBean login = new LoginBean()
}

e o filho,Login:

public class LoginBean{
	@OneToOne(fetch = FetchType.EAGER)
	@JoinColumn(name="id_empresa")
	private EmpresaBean empresa;
}

e meu enum Estado

public enum Estado {
	AC("Acre"),
	AL("Alagoas"),
	AP("Amapá"),
	AM("Amazonas"),
	BA("Bahia"),
	CE("Ceará"),
	DF("Distrito Federal"),
	GO("Goiás"),
	ES("Espírito Santo"),
	MA("Maranhão"),
	MT("Mato Grosso"),
	MS("Mato Grosso do Sul"),
	MG("Minas Gerais"),
	PA("Pará"),
	PB("Paraiba"),
	PR("Paraná"),
	PE("Pernambuco"),
	PI("Piauí"),
	RJ("Rio de Janeiro"),
	RN("Rio Grande do Norte"),
	RS("Rio Grande do Sul"),
	RO("Rondônia"),
	RR("Rorâima"),
	SP("São Paulo"),
	SC("Santa Catarina"),
	SE("Sergipe"),
	TO("Tocantins");
	
	private String estado;

	Estado(String estado){
		this.estado = estado;
	}
	
	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}
	
	@Override
	public String toString(){
		return estado;
	}

O que to fazendo de errado?

3 Respostas

F

Tá vindo um valor que o enum não conhece, não tá na lista dele.

M

claro que ta…acabei de dar um select na mão e retornou SP e me diz q ele não reconhece?

D

PessoALL,

Tive este mesmissimo problema - e identifiquei que está chegando valores null para o meu enum. Vocês conhecem alguma forma de tratar isso no hibernate? Ou sei la - colocar um valor null no enum…

Por favor, me ajudem

Obrigado

Criado 12 de junho de 2008
Ultima resposta 14 de out. de 2008
Respostas 3
Participantes 3