Hibernate - Problema para salvar um objeto

Opa :smiley:

Recebo seguinte erro após eu forçar uma violação de chave única. Eu forço a violação, ai eu trato a exceção e lanço que aquele valor já existe no banco, mas quando altero o valor e coloco para salvar de novo, acontece isso:

Alguém sabe o pq do hibernate lançar esse erro?

Meu método de salvar está assim:

public void salvarOperador(){
		getFuncionarioBean().setEmpresa(funcionarioRoot.getEmpresa());
		getFuncionarioBean().getLogin().setSenha(gerarMD5(getFuncionarioBean().getLogin().getSenha()));
		getFuncionarioBean().getLogin().setNivel(2);
		getFuncionarioBean().getLogin().setFuncionario(getFuncionarioBean());
		FuncionarioDAO dao = new FuncionarioDAO(FuncionarioBean.class);
		logger.info("Cadastrar Funcionario para Empresa de ID: " + funcionarioRoot.getEmpresa().getId());
		dao.save(getFuncionarioBean());
}

DAO

	public void save(Object object) {
		try 
		{
			session = HibernateSessionFactory.getInstance().openSession();
			logger.info("Preparando para salvar objeto: [ " + classe.getSimpleName() + " ]");
			transaction = session.beginTransaction();
			session.save(object);
			transaction.commit();
			logger.info("Objeto [ " + classe.getSimpleName() + " ] salvo com sucesso");
		} catch (Exception ex) {
			logger.error("Erro ao salvar objeto: [ " + classe.getSimpleName() + " ]", ex);
			mapaErros.put("erroSalvarException", ex);
			SendMail sendEmail = new SendMail("Erro ao salvar objeto: [ " + classe.getSimpleName() + " ]", ex);
			sendEmail.run();
			rollback();
		} finally {
			try {
				if(session.isOpen()){
					logger.info("Finalizando sessao");
					session.close();
				}
			} catch (HibernateException hex) {
				mapaErros.put("erroFinalizarSessao", hex);
				SendMail sendEmail = new SendMail("Erro ao finalizar sessao: ", hex);
				sendEmail.run();
				logger.error("Erro ao finalizar sessao", hex);
			}
		}
	}

E o relacionamento está da seguinte maneira ( Empresa - Funcionario - Carga - Login):

EmpresaBean

	
	@OneToMany(mappedBy="empresa", fetch=FetchType.LAZY)
	@Cascade(CascadeType.ALL)
	private Collection<FuncionarioBean> funcionarios = new ArrayList<FuncionarioBean>();

FuncionarioBean

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name="id_empresa", insertable=true, updatable=true)
	@Fetch(FetchMode.JOIN)
	private EmpresaBean empresa;
	
	@OneToMany(mappedBy="funcionario", fetch=FetchType.LAZY)
	@Cascade(CascadeType.ALL)
	private Collection<CargaBean> cargas = new ArrayList<CargaBean>();	
	

	@OneToOne(mappedBy = "funcionario", fetch=FetchType.LAZY)
	@Cascade(CascadeType.ALL)
	private LoginBean login = new LoginBean();

LoginBean

@OneToOne
	@JoinColumn(name = "id_funcionario")
	@Cascade(CascadeType.ALL)
	private FuncionarioBean funcionario;

CargaBean

        @ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name="id_funcionario", insertable=true, updatable=true)
	@Fetch(FetchMode.JOIN)
	private FuncionarioBean funcionario;	

Eu desconfio que seja algo com o relacionamento entre elas. Alguém pode me ajudar?

[]'s

você precisa dar um clear na sessão atual pra limpar o que ficou no cache do hibernate.

Isso não resolveu…foi a primeira coisa que eu fiz!