Membro desde: 26/10/2006 16:30:23
Mensagens: 220
Offline
Eai Pessoal,
Estou começando a brincar com JPA e preciso de ajuda. Alguem sabe como eu implemento um findByExample genérico com JPA?
Preciso que este método recebe uma instancia somente com alguns campos preenchidos, e recupere do banco todas as intancias com os valores iguais ao objeto de exemplo. Existe alguma maneira de fazer essa comparação?
estou seguindo nesta linha:
Estou recebendo uma a seguinte exceção:
Exception in thread "main" java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.com.educare.api.Especial
Acho que isso não está funcionando pois a query ira procurar uma instancia exatamente igual a que eu passei. Como eu posso driblar isso para que ele compare só com os campos que eu preenchi? Implemento isso no .equals() do objeto que será comparado?
Membro desde: 26/10/2006 16:30:23
Mensagens: 220
Offline
Pessoal,
Acabei de ler a spec e lá diz que quando eu comparo objetos eles só são iguais se a primaryKey for a mesma... então acredito que implementar um equals no objeto que só compara os valores preenchidos nao vai adiantar.
Assim não sei se da pra implementar um findByExample genérico com jpa.
Como estou usando a implementação do Hibernate vou apelar. Eu sei as desvantagens de fazer isso, mas até sair a implementação da spec de JPA que tem Criteria vou ser obrigado a usar a Session do hibernate neste método.
Só pra deixar aqui exemplo de como se faz isso:
Espero que isto ajude alguem.
Se souberem de uma solução melhor por favor me digam.