Mise en variable de colonne dans une requete en jpa

Résolu
babacool951 -  
 babacool951 -
Bonjour,

je n'arrive pas à mettre en variable les colonnes en jpa dans le but de faire une fonction generique .

public Set<T> fingAllBySomething(Object o, Object o2) throws DaoException {
        try {
            TypedQuery<T> tp = this.em.createQuery("SELECT t FROM " + this.entityClass.getSimpleName() + " t WHERE :colonne = :valeur", this.entityClass);
            tp.setParameter("valeur", o2);
            tp.setParameter("colonne", "t." + o);
            return tp.getResultList().stream().collect(Collectors.toSet());
        } catch (IllegalArgumentException e) {
            throw new DaoException(e.getMessage(), e);
        }
    }
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Au lieu de faire un "WHERE :colonne" avec setParameter("colonne", "t." + o) tu peux simplement faire "WHERE t." + o

Remarque : Le nom d'une colonne est forcément un String, pas besoin de mettre Object
0
babacool951
 
Bonjour,

Je vous remercie de votre réponse ça fonctionne parfaitement !!!

J'avais oublié que les colonnes devaient être obligatoirement en String.
1