private <T> List<T> query(String sql) { List<T> result = null; try { if (Map.class.isAssignableFrom(this.clazz)) { Connection con = ds.getConnection(); if (args != null && args.size() > 0) { result = (List<T>) JdbcUtil.getListWithArgs(con, clazz, sql, args.toArray(new Object[] {})); } else { result = (List<T>) JdbcUtil.getList(con, clazz, sql); } } else { if (args != null && args.size() > 0) { result = (List<T>) DAOFactory.getSelectDAO(dsName) .selectBySQL(clazz, sql, args.toArray(new Object[] {})); } else { result = (List<T>) DAOFactory.getSelectDAO(dsName).selectBySQL(clazz, sql); } } // this.clear(); if (result != null && result.size() > 0) { for (T t : result) { // ToOne relation class cascade select final String[] fields = ORMConfigBeanUtil.getToOneField(t.getClass()); if (fields == null || fields.length == 0) continue; DAOFactory.getCascadeDAO(dsName).select(t, fields); } } return result; } catch (Exception e) { log.error("sql-->" + sql + "exception:" + StringUtil.getExceptionString(e)); throw new DAOException(sql + " execute exception", e); } }