À l'aide de mot-clé DISTINCT en JPA sur des colonnes

Je suis en train de lire quelques valeurs à partir d'une base de données qui est horriblement onu-normalisées (dont je ne contrôle pas). L'appel récupère les annonces pour les départements de l'université, et si un utilisateur est dans plusieurs départements (ce qui est possible), alors les mêmes résultats sont retournés plusieurs fois pour ces utilisateurs. Toutefois, certains départements peuvent avoir différentes annonces, tandis que certains ont le même.

Est-il un moyen pour moi d'utiliser le mot clé DISTINCT dans JPA sur des colonnes? C'est ce que j'ai actuellement pour la requête:

String jpql = "SELECT DISTINCT annoucement FROM Announcment announcement "
                + "WHERE (announcement.date <= :now AND announcement.endDate >= :now) "
                + "AND announcement.approved = true AND announcement.departmentId IN (:departmentIDs)";

TypedQuery<Announcement> query = entityManager.createQuery(jpql,
                Announcement.class);
query.setParameter("now", new Date());
query.setParameter("departmentIDs", departmentIDs);

La departmentID valeur peut être différent, mais l'annonce, les dates, etc. sont tous identiques. Cette requête renvoie les annonces qui ont des valeurs en double.

connaissez-vous l'APC de la version que vous utilisez, par hasard?
Hibernate 3.6.6 et hibernate-jpa-2.0-api-1.0.1.Final.jar

OriginalL'auteur acvcu | 2012-02-10