public class QuerySiteService {
public static final QuerySiteService me = new QuerySiteService();
public SiteGroup findTowerSiteByZoneId(Integer zoneid) {
String sOpr = findStOfComById(zoneid);
List<Site> sites = new ArrayList<Site>();
List<Record> records = findStInfoById(zoneid);
if (records != null) {
Iterator<Record> iter=records.iterator();
while(iter.hasNext()){
Record record=iter.next();
Site site = new Site();
site.setId(record.get("Id"));
site.setName(record.getStr("SiteName"));
site.setLon(record.getDouble("Lon"));
site.setLat(record.getDouble("Lat"));
site.setOperator(sOpr);
sites.add(site);
}
}
SiteGroup stGroup = new SiteGroup();
stGroup.setSites(sites);
return stGroup;
}
private String findStOfComById(Integer id) {
String sql = "SELECT cxp_b_operator.`Name` " + "FROM cxp_b_operator,cxp_c_operatorlocation "
+ "WHERE cxp_b_operator.Id = cxp_c_operatorlocation.OperatorID "
+ "AND cxp_c_operatorlocation.ZoneID = ?";
Record record = Db.findFirst(sql, id);
return record.getStr("Name");
}
private List<Record> findStInfoById(Integer id) {
String sql = "SELECT cnp_b_site.Id,cnp_b_site.SiteName,cnp_b_property.Technology,cnp_b_property.Lat,cnp_b_property.Lon,cnp_b_property.Address "
+ "FROM cnp_b_site,cnp_b_property,cxp_c_zonesite "
+ "WHERE cnp_b_property.PropertyId = cnp_b_site.PropertyId "
+ "AND cnp_b_site.Id = cxp_c_zonesite.SiteID " + "AND cxp_c_zonesite.ZoneID = ?";
List<Record> records = Db.query(sql, id);
return records;
}
private List<Record> findSectorInfoById(Integer id) {
String sql = "SELECT cnp_b_sector.MasterId,cnp_b_sector.Id,cnp_b_sector.SectorName,cnp_b_rfinfo.Bearing "
+ "FROM cnp_b_sector,cnp_c_sectorrf,cnp_b_rfinfo,cxp_c_zonesite "
+ "WHERE cnp_b_rfinfo.RFId = cnp_c_sectorrf.RFId " + "AND cnp_c_sectorrf.SectorId = cnp_b_sector.Id "
+ "AND cnp_b_sector.MasterId = cxp_c_zonesite.SiteID " + "AND cxp_c_zonesite.ZoneID = ?";
List<Record> records = Db.query(sql, id);
return records;
}
private List<Record> findTowerNewStById(Integer id) {
String sql = "SELECT tower_b_siteproperty_new.SiteId,tower_b_siteproperty_new.AntHeight,Province,City,Town,Scene "
+ "FROM tower_b_siteproperty_new,cxp_c_zonesite "
+ "WHERE tower_b_siteproperty_new.SiteId = cxp_c_zonesite.SiteID " + "AND cxp_c_zonesite.ZoneID = ?";
List<Record> records = Db.query(sql, id);
return records;
}
private List<Record> findTowerInuseStById(Integer id) {
String sql = "SELECT tower_b_siteproperty_inuse.SiteId,tower_b_siteproperty_inuse.AntHeight,Province,City,Town,Scene "
+ "FROM tower_b_siteproperty_inuse,cxp_c_zonesite "
+ "WHERE tower_b_siteproperty_inuse.SiteId = cxp_c_zonesite.SiteID " + "AND cxp_c_zonesite.ZoneID = ? ";
List<Record> records = Db.query(sql, id);
return records;
}
private List<Record> findTowerReserveStById(Integer id) {
String sql = "SELECT tower_b_siteproperty_reserve.SiteId,tower_b_siteproperty_reserve.AntHeight,Province,City,Town,Scene "
+ "FROM tower_b_siteproperty_reserve,cxp_c_zonesite "
+ "WHERE tower_b_siteproperty_reserve.SiteId = cxp_c_zonesite.SiteID "
+ "AND cxp_c_zonesite.ZoneID = ?";
List<Record> records = Db.query(sql, id);
return records;
}
}在遍历list<Record>出现如下错误:
Sql: SELECT cnp_b_site.Id,cnp_b_site.SiteName,cnp_b_property.Technology,cnp_b_property.Lat,cnp_b_property.Lon,cnp_b_property.Address FROM cnp_b_site,cnp_b_property,cxp_c_zonesite WHERE cnp_b_property.PropertyId = cnp_b_site.PropertyId AND cnp_b_site.Id = cxp_c_zonesite.SiteID AND cxp_c_zonesite.ZoneID = ?
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.jfinal.plugin.activerecord.Record
at com.cxp.service.api.app.query.site.QuerySiteService.findTowerSiteByZoneId(QuerySiteService.java:20)
at com.cxp.service.api.app.query.site.QuerySiteController.index(QuerySiteController.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.jfinal.aop.Invocation.invoke(Invocation.java:73)
at com.cxp.service.core.interceptor.KeyAuthorizedInterceptor.intercept(KeyAuthorizedInterceptor.java:31)
at com.jfinal.aop.Invocation.invoke(Invocation.java:67)
at com.jfinal.core.ActionHandler.handle(ActionHandler.java:74)
at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:74)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1347)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
也是就在执行Record record=iter.next();这句话时出现错误,求大神解答???
Db.find(sql, id);
注意:query 系列方法原样返回数据类型, find 系列方法将返回的数据封装成 Record 对象