/** * 解析数据关联关系 * * @param list * @param fieldName * @param keyMethod * @param table * @param refKey * @param ids * @throws NoSuchFieldException * @throws NoSuchMethodException * @throws IllegalAccessException * @throws InvocationTargetException */ private void parseReference( List<T> list, String fieldName, Method keyMethod, String table, String refKey, StringBuffer ids) throws NoSuchFieldException, NoSuchMethodException, IllegalAccessException, InvocationTargetException { Coupler<Entity> childCoupler = childCouplers.get(fieldName); Class<Entity> childClass = childCoupler.getClazz(); TreeDao<Entity> childDao = DaoFactory.getTreeDao(childClass); String childSql = buildChildQuerySql(table, refKey, ids, ordersMap, fieldName); if (entityClass == childClass) { int count = dao.count(childSql); if (count == 0) { return; } } List<Entity> childEntities = childDao.queryForTree(childSql); Class<?> fileType = entityClass.getDeclaredField(fieldName).getType(); if (fileType == List.class) { setListValue(list, keyMethod, fieldName, childEntities, childClass, refKey); } else { setSingleValue(list, keyMethod, fieldName, childEntities, childClass, fileType, refKey); } }