StringBuffer hqlBuf = new StringBuffer(); hqlBuf.append("select "); hqlBuf.append(" at.terminal_model_name as {ap.packageMd5}, "); hqlBuf.append(" at.terminal_model_code as {ap.packageStatus},"); hqlBuf.append(" {ap}.APP_ID as {ap.appId}," ); hqlBuf.append(" {ap}.OS_TYPE as {ap.osType}, " ); hqlBuf.append(" {ap}.PACKAGE_ID as {ap.packageId}," ); hqlBuf.append(" {ap}.INSTALL_FLAG as {ap.installFlag},"); hqlBuf.append(" {ap}.FILE_NAME as {ap.fileName}," ); hqlBuf.append(" {ap}.PACKAGE_TYPE as {ap.packageType}," ); hqlBuf.append(" {ap}.store_path as {ap.storePath},"); hqlBuf.append(" {ap}.PACKAGE_SIZE as {ap.packageSize} "); hqlBuf.append(" from app_package_model apm left join app_package ap on "); hqlBuf.append(" (apm.package_id = {ap}.package_id) left join app_terminal at on "); hqlBuf.append(" (apm.terminal_id = at.terminal_id) where {ap}.app_id = '").append(appId).append("'"); List<AppPackage> list = this.getSession().createSQLQuery(hqlBuf.toString()) .addEntity("ap",AppPackage.class) .list(); StringBuffer sqlCount = new StringBuffer("select count(*) from app_package_model apm "); sqlCount.append("left join app_package ap on "); sqlCount.append("(apm.package_id = ap.package_id) "); sqlCount.append("left join app_terminal at on "); sqlCount.append("(apm.terminal_id = at.terminal_id) "); sqlCount.append("where ap.app_id = '" + appId + "'"); List countList = this.getSession().createSQLQuery(sqlCount.toString()).list(); int count = Integer.parseInt(countList.get(0).toString()); 注意:这里要注意到{ap}是AppPackge.class的别名,还要注意这里要把AppPackge里的所有字段查出来。