QBE com Hibernate

Estou tendo um problema com o QBE do Hibernate.

Estou fazendo da seguinte maneira.

	public List findByQBE(Object obj)throws HibernateException{
		Unidade exampleUnidade = (Unidade) obj;
		Criteria criteria = getSession().createCriteria(Unidade.class);
		criteria.add( Example.create(exampleUnidade));
		return criteria.list();
	}

Até que está funcionando o unico problema é quando o objeto vem só com o valor da chave primaria preenchida. Se acontecer isso ele está devolvendo todos os registros do banco.

Me parece que o QBE só funciona se um dos valores que não fizerem parte da chave estiverem preenchido. É isso mesmo ou eu estou fazendo alguma coisa errada… Se alguem puder me ajudar eu agradeço…

Valeu

Rapaz, eu remexi nas coisas aqui e ,não tenho certeza, mas acho que ele não leva o identificador em consideração quando está procurando por exemplos não, até porque seria meio ilógico, já que o identificador é único, não vai retornar nenhum exemplo.

Beleza valeu, vou tentar fazer de outra forma é que no meu caso eu tenho todos os campos na tela Swing e o usuario pode procurar por qq campo então se ele preenche só o campo que se refere a chave o QBE volta tudo mas eu vou incluir uns “Expression.eq(campochave, valor)” se as propriedades da chave estivem preenchidas…

Valeu

É fácil, vc primeiro verifica se o identificador está preenchido, se estiver faz o load, caso contrário, utiliza o query by example.

Eu utilizava assim sem maiores problemas…

Se quiseres algo mais dinamico, de uma olhada na Interface ClassMetadata, onde vc pode pegar o identificador sem saber qual é o nome do método.

Fallow