StringBuilder sb = new StringBuilder("SELECT PR.ID,PR.LOG_TITLE,PR.DOG_INFO,DI.NAME,(CASE WHEN PL.TOTAL > 0 THEN PL.TOTAL ELSE 0 END) AS TOTAL");
sb.append(" FROM DOG_INFO DI,DOG_LOG PR LEFT JOIN (SELECT PL.TARGET_ID, COUNT(PL.ID) AS TOTAL FROM POLL_LOG PL where 1=1");
sb.append(" GROUP BY PL.TARGET_ID ORDER BY TOTAL DESC) PL ON PR.ID=PL.TARGET_ID");
sb.append(" WHERE DI.ID = PR.DOG_INFO and TOTAL <> 0 ORDER BY TOTAL DESC");
SQLQuery sqlQuery = getSession().createSQLQuery(sb.toString());
// 这里必须设置
sqlQuery.addScalar("id", Hibernate.INTEGER);
sqlQuery.addScalar("logTitle", Hibernate.STRING);
sqlQuery.addScalar("dogId", Hibernate.LONG);
sqlQuery.addScalar("total", Hibernate.LONG);
// 返回的是一个object数组的列表。
List list = sqlQuery.list();