思路:
定义一个方法getParentName参数为int类型的configId,返回类型为String类型.
在方法getParentName内部进行如下操作:
1 根据当前节点configId查询数据库,得到一条记录,存入实体类中。
2 判断存入的实体类是否为空,如果不为空,定义变量configName用来存储当前节点的名称再跟","用于分割,内部调用getParentName(参数为刚才存入实体类的父节点parentId),定义变量returnConfigName用于存储方法getParentName的返回值,然后将configName和returnConfigName进行拼接返回.
如果存入的实体类为空,则返回空.
方法用例:

/**
	 * 递归得到当前节点的所有父节点
	 * @param configId 当前节点
	 * @return 所有父节点
	 * @throws Exception 抛出的异常
	 */
	public String getParentName(int configId)throws Exception{
		//和数据库交互,得到当前节点记录
		PatrolConfigVO patrolConfigEntity = patrolConfigDao.getPatrolConfigByConfigId(configId);
		if(patrolConfigEntity != null){
			String configName = patrolConfigEntity.getConfigName()+"mmc";
			//参数patrolConfigEntity.getConfigParentId()表示当前节点的父节点ID
			String returnConfigName = getParentName(patrolConfigEntity.getConfigParentId());
			return returnConfigName+configName;
		}else{
			return "";
		}
	}



PatrolConfigVO实体类:


import java.io.Serializable;

/**
 * 巡检配置对象类
 * @author zhoujie
 * @version 0.1 2013-8-19 8:54
 */
public class PatrolConfigVO implements Serializable {
	private static final long serialVersionUID = 1L ;

	/**
	 * 巡检配置编号
	 */
	private int configId;

	/**
	 * 信号编号
	 */
	private int signalNr;

	/**
	 * 巡检配置名称
	 */
	private String configName;

	/**
	 * 巡检配置类型(0:有子项,1:单选,2:复选,3:文本框,4:文本域,5:上传照片)
	 */
	private int configType;

	/**
	 * 级别
	 */
	private int level;

	/**
	 * 巡检父配置编号
	 */
	private int configParentId;

	/**
	 * 巡检类型(1:日常巡检,2:月度巡检,3:季度巡检,4:年度巡检)
	 */
	private int patrolType;

	/**
	 * 设备类别编号
	 */
	private int zequipId;

	/**
	 * 选项
	 */
	private String options;

	/**
	 * 是否显示备注(0:不显示,1:显示)
	 */
	private int isRemark;

	/**
	 * 是否选中(0:不选中,1:选中)
	 */
	private int isChoosed;

	/**
	 * 英文名
	 */
	private String englishName;

	/**
	 * 备注(表头信息、设备信息、设备运行信息、附件)
	 */
	private String patrolFormType;


	/**
	 * 选项名字集合
	 */
	private String[]  optionNames;


	/**
	 * 构造器
	 */
	public PatrolConfigVO(){
		configId = 0;
		signalNr = 0;
		configName = "";
		configType = 0;
		level = 0;
		configParentId = 0;
		patrolType = 0;
		zequipId = 0;
		options = "";
		isRemark = 0;
		isChoosed = 0;
		englishName = "";
		patrolFormType = "";
	}

	/**
	 * 获取巡检配置编号
	 * @return
	 */
	public int getConfigId() {
		return configId;
	}

	/**
	 * 设置巡检配置编号
	 * @param configId 巡检配置编号
	 */
	public void setConfigId(int configId) {
		this.configId = configId;
	}

	/**
	 * 获取信号编号
	 * @return 信号编号
	 */
	public int getSignalNr() {
		return signalNr;
	}

	/**
	 * 设置信号编号
	 * @param signalNr 信号编号
	 */
	public void setSignalNr(int signalNr) {
		this.signalNr = signalNr;
	}

	/**
	 * 获取巡检配置名称
	 * @return 巡检配置名称
	 */
	public String getConfigName() {
		return configName;
	}

	/**
	 * 设置巡检配置名称
	 * @param configName 巡检配置名称
	 */
	public void setConfigName(String configName) {
		this.configName = configName;
	}

	/**
	 * 获取巡检配置类型
	 * @return 巡检配置类型
	 */
	public int getConfigType() {
		return configType;
	}

	/**
	 * 设置巡检配置类型
	 * @param configType 巡检配置类型
	 */
	public void setConfigType(int configType) {
		this.configType = configType;
	}

	/**
	 * 获取级别
	 * @return 级别
	 */
	public int getLevel() {
		return level;
	}

	/**
	 * 设置级别
	 * @param level 级别
	 */
	public void setLevel(int level) {
		this.level = level;
	}

	/**
	 * 获取巡检父配置编号
	 * @return 巡检父配置编号
	 */
	public int getConfigParentId() {
		return configParentId;
	}

	/**
	 * 设置巡检父配置编号
	 * @param configParentId 巡检父配置编号
	 */
	public void setConfigParentId(int configParentId) {
		this.configParentId = configParentId;
	}

	/**
	 * 获取巡检类型
	 * @return 巡检类型
	 */
	public int getPatrolType() {
		return patrolType;
	}

	/**
	 * 设置巡检类型
	 * @param patrolType 巡检类型
	 */
	public void setPatrolType(int patrolType) {
		this.patrolType = patrolType;
	}

	/**
	 * 获取设备类别编号
	 * @return 设备类别编号
	 */
	public int getZequipId() {
		return zequipId;
	}

	/**
	 * 设置设备类别编号
	 * @param zequipId 设备类别编号
	 */
	public void setZequipId(int zequipId) {
		this.zequipId = zequipId;
	}

	/**
	 * 获取选项
	 * @return 选项
	 */
	public String getOptions() {
		return options;
	}

	/**
	 * 设置选项
	 * @param options 选项
	 */
	public void setOptions(String options) {
		this.options = options;
	}

	/**
	 * 获取是否显示备注
	 * @return 是否显示配置
	 */
	public int getIsRemark() {
		return isRemark;
	}

	/**
	 * 设置是否显示配置
	 * @param isRemark 是否显示配置
	 */
	public void setIsRemark(int isRemark) {
		this.isRemark = isRemark;
	}

	/**
	 * 获取是否选中
	 * @return 是否选中
	 */
	public int getIsChoosed() {
		return isChoosed;
	}

	/**
	 * 设置是否选中
	 * @param isChoosed
	 */
	public void setIsChoosed(int isChoosed) {
		this.isChoosed = isChoosed;
	}

	/**
	 * 获取英文名
	 * @return 英文名
	 */
	public String getEnglishName() {
		return englishName;
	}

	/**
	 * 设置英文名
	 * @param englishName 英文名
	 */
	public void setEnglishName(String englishName) {
		this.englishName = englishName;
	}

	/**
	 * 获取备注
	 * @return 备注
	 */
	public String getPatrolFormType() {
		return patrolFormType;
	}

	/**
	 * 设置备注
	 * @param patrolFormType 备注
	 */
	public void setPatrolFormType(String patrolFormType) {
		this.patrolFormType = patrolFormType;
	}

	public String[] getOptionNames() {
		return optionNames;
	}

	public void setOptionNames(String[] optionNames) {
		this.optionNames = optionNames;
	}
}