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:
public List<K> findByExample(K example) {
String tableName = example.getClass().getSimpleName();
String objectName = example.getClass().getSimpleName().toLowerCase();
Query query = em.createQuery("SELECT " + objectName + " FROM " + tableName + " " +
objectName + " WHERE " + objectName + " = :example");
query.setParameter("example", example);
return query.getResultList();
}
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?
Valeu pessoal
[]s
Ferry