?
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();
?