【发布时间】:2014-03-05 16:47:16
【问题描述】:
我有以下查询:
SELECT MAX(MONITOR_ALERT_INSTANCE_ID) AS MONITOR_ALERT_INSTANCE_ID,
description,
MAX(CO_MOD_ASSET_ID) as CO_MOD_ASSET_ID,
COUNT(MONITOR_ALERT_INSTANCE_ID) AS COUNT
FROM monitor_alert_instance
WHERE description IN
(SELECT description
FROM monitor_alert_instance
WHERE co_mod_asset_id = 123
)
GROUP BY description;
以下类为查询的每个属性设置值:
public void execute(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(queryString);
// ps.setLong(1, (long) 4);
int index = 1;
ResultSet rs = ps.executeQuery();
int columnCount = rs.getMetaData().getColumnCount();
systemHealthAlertList = new ArrayList<MonitorAlertInstance>();
while(rs.next())
{
MonitorAlertInstance monitor = new MonitorAlertInstance();
MonitorAlert mon = new MonitorAlert();
CompanyModuleAsset cma = new CompanyModuleAsset();
MonitorAlertDAO maDAO = new MonitorAlertDAO(getSession());
CompanyModuleAssetDAO cmaDAO = new CompanyModuleAssetDAO(getSession());
monitor.setMonitorAlertInstanceId(rs.getLong(1));
monitor.setDescription(rs.getString(2));
mon.setMonitorAlertId(rs.getLong(3));
Date d = monitor.getCreatedDate();
Format formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = formatter.format(rs.getDate(4));
Date date = null;
try {
date = format.parse(s);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
monitor.setCreatedDate(date);
System.out.println("Date is : " + date);
monitor.setStatus(rs.getString(5));
cma.setCoModAssetId(rs.getLong(6));
Long monitorAlertId = mon.getMonitorAlertId();
Long coModAssetId= cma.getCoModAssetId();
MonitorAlert ma = maDAO.findById(monitorAlertId);
monitor.setMonitorAlert(ma);
CompanyModuleAsset cm = cmaDAO.findById(coModAssetId);
monitor.setCompanyModuleAsset(cm);
systemHealthAlertList.add(monitor);
}
rs.close();
ps.close();
}
}
我的问题是,在查询中“count”是一个派生变量。如何在 systemHealthAlertList 中添加计数结果。所以 systemHealthAlertList 包含包括计数在内的所有属性。
谢谢
【问题讨论】: