查询某一栏目的所有父栏目(sqlserver2005)

Pojo:

private Integer formId;

	private String formName;

	private Integer formLevel;

	public Integer getFormId() {
		return formId;
	}

	public void setFormId(Integer formId) {
		this.formId = formId;
	}

	public String getFormName() {
		return formName;
	}

	public void setFormName(String formName) {
		this.formName = formName;
	}

	public Integer getFormLevel() {
		return formLevel;
	}

	public void setFormLevel(Integer formLevel) {
		this.formLevel = formLevel;
	}
	private Form parentFormInfo;
	//
	private Set<Form> childFormList=new HashSet();
	
	
	public Form()
	{
		
	}
	public Form getParentFormInfo() {
		return parentFormInfo;
	}
	public void setParentFormInfo(Form parentFormInfo) {
		this.parentFormInfo = parentFormInfo;
	}
	public Set<Form> getChildFormList() {
		return childFormList;
	}
	public void setChildFormList(Set<Form> childFormList) {
		this.childFormList = childFormList;
	}

 

Form.hbm.xml:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping>
	<class name="Form" table="form">
		<id name="formId" column="FormId">
			<generator class="identity" />
		</id>

		<property name="formName" column="FormName" />
		<property name="formLevel" column="FormLevel" />
		<many-to-one name="parentFormInfo" column="parentId"></many-to-one>
		<set name="childFormList" inverse="true" lazy="true"
			cascade="all">
			<key column="parentId" />
			<one-to-many class="Form" />
		</set>
		
	</class>
	
		<sql-query name="queryAllParentFormByFormId">
		<![CDATA[
	with showtree(formid,parentid,formname,formlevel)
as
(
   select top 1 formid,parentid,formname,formlevel from form f where f.formid=:formId union all select t.formid,t.parentid,t.formname,t.formlevel from form  as t join showtree on t.formid=showtree.parentid
)
SELECT formid,parentid,formname,formlevel FROM showtree order by parentid 
	  ]]>
	  <return alias="f" class="Form"/>
	</sql-query>
</hibernate-mapping>

 

Dao中:

List<Form> list = getHibernateTemplate().executeFind(new HibernateCallback() {
	public Object doInHibernate(Session session)
                           throws HibernateException, SQLException {
	Query query = session.getNamedQuery(queryName).setInteger("formId", formId);
		List<Form> l=query.list();
		return l;
					
				}
			});

 

你可能感兴趣的:(DAO,sql,Hibernate,xml,F#)