Here's a query I just built as I build my application and learn rails:
def self.views sorted .select("help_categories.id, help_categories.name, COUNT(help_documents.id) AS number_of_documents") .joins("left outer join help_documents on help_categories.id = help_documents.category_id") .group(:id) .group(:name) end
I just want to say that this query works and is so much more straight- forward compared to using Hibernate. In the Hibernate world, you first have to make a static class to store id, name and the number_of_documents... and the query and boiler plate is immense:
public List<HelpCategoryView> findAllViews() { return getHibernateTemplate().executeFind(new HibernateCallback<List<HelpCategoryView>>() { @Override public List<HelpCategoryView> doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery( "select new trainingdividend.domain.sysadmin.HelpCategoryView(" + " helpCategory.id, helpCategory.name, count(helpDocument)) " + "from HelpCategory helpCategory " + " left join helpCategory.documents helpDocument " + "group by helpCategory.id, helpCategory.name " + "order by helpCategory.name asc" );
return query.list(); } }); }
So congrats!