• 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实体类映射。后来网上查找发现要和自己实现一对多双向关联来实现自连接,这的确是个好方法,也容易理解。

    ================================== 赵客缦胡缨,吴钩霜雪明。 银鞍照白马,飒沓如流星。 ==================================
  • 相关阅读:
    1161-飞弹
    1160-繁杂的道路
    JS实现刷新iframe的方法
    ifame 跨域高度自适应
    Asp.net弹出层并且有遮罩层
    Regex.Match 方法
    查询404文件
    JS中showModalDialog 详细使用
    对frameset、frame、iframe的js操作
    HTML & XML 转义字符
  • 原文地址:https://www.cnblogs.com/lucare/p/9312701.html
Copyright © 2020-2023  润新知