Hibernate: SearchById montando objeto com ID errado

tudo bom pessoal
eu tenho o seguinte método em meu DAO genérico para o Hibernate:

   public T findById(PK id) {
      System.out.println(" ### BUSCANDO: " + id);

      T a = (T) session.load(persistentClass, id);

      if (a instanceof EstadoCivil) {
         System.out.println(" ### ENCONTRADO: " + ((EstadoCivil) a).getId());
         System.out.println(" ### ENCONTRADO: " + ((EstadoCivil) a).getEstadoCivil());
      }
      
      return a;
   }

Detalhe: estou fazendo cast para estado civil pois estou testando somente estados civis
o que acontece eh q quando eu faco a pesquisa por id a primeira vez ocorre tudo bem… o hibernate gera a sql normalmente (exemplo… buscar pelo estadoCivil com ID 1)
mas quando eu faco de novo ele nao executa a query novamente… nao vejo gerando sql no log e oID do objeto vem trocado… vem co o ID do objeto pesquisado anteriormente
olhem o LOG onde 1 == Solteiro e 2 == casado:

viram?
busqui pelo ID 1 e ele me troxe o Solteiro mas trocou o ID para 2
oq estah acontecendo?

pessoal
puz um sysout nos metodos getId e setId do meu entity bean EstadoCivil
isso ai acontece qd acontece o evento onblur no campo de estado civil

	public T findById(PK id) {
		System.out.println(" ### GenericHibernateDAO.findById - Buscando " + id);
		T a = (T) session.get(persistentClass, id);

		if (a instanceof EstadoCivil) {
			System.out.println(" ### GenericHibernateDAO.findById - Encontrado " + ((EstadoCivil) a).getId());
			System.out.println(" ### GenericHibernateDAO.findById - Encontrado " + ((EstadoCivil) a).getEstadoCivil());
		}
		
		return a;
	}

no meu GenericHibernateDAO quando eu chamo o findById… dentro do findById ele estah chamando o metodo EstadoCivil.getId e estah retornando 2
nao era pra ele chamar o EstadoCivil.getId e sim terminar o metodo findbyid eu acho
alguma ideia do q possa estar acontecendo?
valew