Bonsoir

J'ai trois classes:

User (id, login, password)
Admin (level) qui hérite de User
Message (id, date, message) avec un ManyToOne sur Admin.

Je voudrais créer une CriteriaQuery qui me permette de récupérer tous les messages qui appartiennent à mon admin.

Actuellement, j'ai ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
public List findByUser(Admin admin) {
        List<Message> list = new ArrayList<Message>();
        if (admin != null) {
            CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
            Root<Message> rt = cq.from(Message.class);
            cq.select(rt).where(getEntityManager().getCriteriaBuilder().equal(rt.get(Message_.Admin).get(User_.ID), admin.getID()));
            Query q = getEntityManager().createQuery(cq);
 
            list = q.getResultList();
        }
 
        return list;
    }
Ça ne me retourne aucun résultat bien qu'il y ait des messages associés à cet admin. Je sais que ça coince au niveau de la clause equal(). Le problème c'est qu'avec Message_.Admin, je n'ai pas accès au champs ID de l'admin. C'est pour ça que j'ai essayé de glisser le get(User_.ID) mais ça ne semble pas bon ou alors je ne sais pas comment faire.

Pourriez-vous m'aider?

Merci