FindByExample() que procure por Pk e Fk

A partir da documentação do hibernate
descrobri que o método findByExample()
não busca por campos que são Pk ou Fk

Se alguém tiver idéia de como montar um
método que procure por todos os campos
da tabela através de um objeto de exemplo,
posta aeh pra gente!!!

Eu pensei em criar uma query pra cada
possibilidade de preenchimento dos campos,
mas o código fica extenso e pouco legível,
principalmente para tabelas maiores.

Não faz sentido procurar PK usando FindByExample(), se você conhece a PK é melhor dar um load(). :wink:

O que o pab quis dizer é “se você só sabe usar o martelo, tudo se parece com pregos. Use a ferramenta mais adequada para seu serviço, como uma chave de fenda.”

O problema eh se o usuário digitar uma
chave e um campo que não condiza com
a chave.

Nesse caso se eu buscar pelo id ele trará um objeto
com um campo diferente do definido pelo usuario.

Seria um boa simplesmente ignora-lo?

Uma boa prática é não mostrar o ID real ao usuário. Se você precisa de uma chave de busca considere usar um campo extra que seja unique mas que não seja PK.
E mesmo nesse caso, a busca por esse campo unique (ou o ID caso você resolva não usar um campo extra) não deveria ser executada em conjunto com outros campos. Veja que uma busca por nome=“José” e sobrenome=“Silva” pode trazer vários usuários com esse nome. Mas uma busca pelo id ‘341’ vai trazer exatamente o usuário que possue esse ID, ou uma lista vazia caso nenhum possua.