hibernate自连接--典型的oracle自带emp实现

用S2SH三大框架整合,用了oracle自带的表emp,实现了自连接。

pojo类:

public class Emp implements java.io.Serializable {

	// Fields

	private Short empno;
	private Dept dept;
	private String ename;
	private String job;
	private Short mgr;
	private Date hiredate;
	private Double sal;
	private Double comm;
	
	//添加一个需要的属性--上级名称-->持有自己的引用(上级也来自员工表)
	//必须是一对多双向  因为上级也出自员工表   一个上级同样是一个员工 他可能有多个下级
	private Emp empmgr;
	private Set<Emp> emps = new HashSet<Emp>();

	//get and set.....
}


Emp.hbm.xml部分:

<hibernate-mapping>
    <class name="com.wepull.pojo.Emp" table="EMP" schema="SCOTT" >
        <id name="empno" type="java.lang.Short">
            <column name="EMPNO" precision="4" scale="0" />
            <generator class="increment"></generator>
        </id>
        <many-to-one name="dept" class="com.wepull.pojo.Dept" fetch="select"
          lazy="false">
            <column name="DEPTNO" precision="2" scale="0" />
        </many-to-one>


        <!-- 自连接配置  手动增加部分  缺一不可 -->
        <many-to-one name="empmgr" class="com.wepull.pojo.Emp"
        update="false" insert="false" >
        	<column name="mgr"></column>
        </many-to-one>

        <set name="emps" cascade="save-update" inverse="true">
        	<key column="mgr"></key>
        	<one-to-many class="com.wepull.pojo.Emp"/>
        </set>



        <property name="ename" type="java.lang.String">
            <column name="ENAME" length="10" />
        </property>
        <property name="job" type="java.lang.String">
            <column name="JOB" length="9" />
        </property>
        <property name="mgr" type="java.lang.Short">
            <column name="MGR" precision="4" scale="0" />
        </property>
        <property name="hiredate" type="java.util.Date">
            <column name="HIREDATE" length="7" />
        </property>
        <property name="sal" type="java.lang.Double">
            <column name="SAL" precision="7" />
        </property>
        <property name="comm" type="java.lang.Double">
            <column name="COMM" precision="7" />
        </property>
    </class>
</hibernate-mapping>


其他部分无需过多阐述,既然能用框架了,别的都是小问题了,个人感觉自连接是个新知识点,所以在此记下以备所需。起初是想单单通过修改HQL语句来实现自连接,可是没有成功,自己也认定不能成功,因为查出的东西无法和pojo实体类映射。后来网上查找发现要和自己实现一对多双向关联来实现自连接,这的确是个好方法,也容易理解。

================================== 赵客缦胡缨,吴钩霜雪明。 银鞍照白马,飒沓如流星。 ==================================
原文地址:https://www.cnblogs.com/lucare/p/9312701.html