Ajouter un Groupe à un Hibernate Critères de la Requête, sans Projection

J'ai des Critères de Requête, qui rejoint un deuxième tableau B, pour sélectionner les entités à partir de la table A. Le problème, c'est que cette requête retourne des entités à partir d'Une table à plusieurs reprises. Mais j'ai besoin des résultats distincts.

À L'Aide De Critères.DISTINCT_ROOT_ENTITY est inutile, becaus ce filtre multiples occurences après le SQL de la Requête a été exécutée. Donc, quand je limite mes résultats à 20 coups, je me retrouve avec seulement 4, mais il y a plus d'entrées, qui correspondent à ma requête.

En pur SQL j'ai simplement ajouter un "GROUP BY ID" de la requête et de tout ce qui est bien, parce que la jointure de la table B est uniquement utilisé, pour sélectionner les entités à partir de la table A. Mais avec les Critères de l'API je ne peux pas faire cela. La seule façon d'ajouter un "GROUPE" est à l'aide de Projections. Mais ensuite, je me retrouve avec des valeurs scalaires, pas avec une véritable instance de ma classe. À l'aide d'un SQL-restriction ne fonctionne pas non plus, parce que hibernate ajoute un bogous "1=" 1 " après mon "GROUPE"de la clause. 🙁

Des idées?

GROUP BY, par définition, implique l'agrégation des données, c'est pourquoi les Projections sont nécessaires. Peut-être que si vous avez ajouté plus de détails sur les tables, et la requête SQL que vous voulez Hibernate pour générer, nous pourrions vous conseiller au mieux.
J'ai une classe de l'Événement. Cette classe a une Liste de Dates. (En fait, ces Dates sont une classe spéciale DateWrapper, qui encapsule la Date et ajoute un Id, parce que hibernate ne peut pas joindre de type de valeur des collections pour le moment). Je voudrais interroger les événements et trouver tous les événements avec un ou plusieurs événements entre x et y. Quand je grap le SQL de la Requête, qui a été générée par les Critères de l'API, et ajouter un "GROUP BY id", c'est exactement, ce que je suis à la recherche d'. Mais je ne trouve aucun moyen d'argumenter Hibernate en ajoutant le GROUPE!

OriginalL'auteur Kai Moritz | 2010-01-09