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

    ================================== 赵客缦胡缨,吴钩霜雪明。 银鞍照白马,飒沓如流星。 ==================================
  • 相关阅读:
    std thread
    windows更新包发布地址
    How to set up logging level for Spark application in IntelliJ IDEA?
    spark 错误 How to set heap size in spark within the Eclipse environment?
    hadoop 常用命令
    windows 安装hadoop 3.2.1
    windows JAVA_HOME 路径有空格,执行软连接
    day01MyBatisPlus条件构造器(04)
    day01MyBatisPlus的CRUD 接口(03)
    day01MyBatisPlus入门(02)
  • 原文地址:https://www.cnblogs.com/lucare/p/9312701.html
Copyright © 2020-2023  润新知