2009-05-27 12 views

risposta

13
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 

Vedi anche https://forum.hibernate.org/viewtopic.php?t=941669

+0

Si dovrebbe piuttosto prendere in considerazione per ottenere risultati diversi utilizzando una query di database (ad esempio, SELEZIONA DISTINTO (xyz) da X) invece di utilizzare Criteria.DISTINCT_ROOT_ENTITY. Si noti che Criteria.DISTINCT_ROOT_ENTITY ottiene i risultati univoci dagli oggetti in memoria (e non dal database), che potrebbe essere costoso per i set di risultati di grandi dimensioni. – Philipp

6

una soluzione più flessibile può essere:

criteria.setProjection(Projections.distinct(Projections.property("property"))); 
+0

Ovviamente intendevi "Proiezioni.distinte" – speshak

+0

l'ho fatto, ben individuato. – waxwing

+2

Si consiglia di evitare l'uso di Projection.distinct perché ha il brutto effetto indesiderato sul lato di ridurre il set di risultati solo a quella proprietà. – user959690

1

dipende dalla vostra interrogazione/criteri. se si fornisce un ID univoco è possibile chiamare criteria.uniqueResult() altrimenti si chiamano criteria.setMaxResults (1) e chiamare criteria.uniqueResult()

Problemi correlati