title: how do you get "real" sql distinct with hibernate criteria queries?
body: <p>I have a Hibernate criteria query that is incorrectly pulling out max results. In many cases, when I specify 20 max results, the query actually only returns 1 or 5 results, because the restrictions return many duplicates.</p>
  
  <pre><code>Criteria c = session.createCriteria(DomainObject.class);
  c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
  c.createAlias("tags.list", "tag");
  c.createAlias("names", "name");
  c.createAlias("site", "site");
  c.createAlias("site.tags.list", "siteTag");
  
  // loads of or/and eq/like restrictions.
  
  c.setFirstResult(0);
  c.setMaxResults(20);
  
  return c.list();
  </code></pre>
  
  <p>Is there any way to fix this query so that if I say 20 max results, it really does return 20 district results? It seems pretty crazy that hibernate limits the query to 20 results, and does the distinct filtering AFTER instead of at the database level.</p>
  
  <p>Help?</p>