zoukankan      html  css  js  c++  java
  • Hibernate【关系映射-左内右连接】

    一。一对多  之  内连接

     使用内连接

    List list=session.createQuery(" from domain.Classes c inner join c.students").list();

      classes中3条数据 。student中6条数据

      发出了4条sql语句

      list结构是6个Object[]类型数据

    迫切内连接:

    List list=session.createQuery(" from domain.Classes c inner join fetch c.students").list();

      发出了1条sql语句

      list结构是Classes类型

    左外连接

    List list=session.createQuery(" from domain.Classes c left join c.students").list();

      发出了4条sql语句

      list结构是6个Object[]类型数据

    迫切左外连接

    List list=session.createQuery(" from domain.Classes c left join fetch c.students").list();

      发出了1条sql语句

      list结构是Classes类型

    要查询两张表的字段怎么办

      (1)创建一个domain类,要有个构造函数

        (2) 使用

    List list=session.createQuery("select new domain.ClassesView(c.name,s.name) from domain.Classes c inner join fetch c.students s ").list();

       发现报错了,带构造函数的查询和fetch的查询不能同时存在


     

    二。多对多 之 内连接

    迫切内连接

    session.createQuery("from domain.Classes c inner join fetch c.students s ");

    迫切左外连接

    session.createQuery("from domain.Classes c left join fetch c.students s ");

    三。一对多 + 多对多

    (1)看下映射文件

        <class name="domain.Student" table="STUDENT">
            <cache usage="read-only"/>
            <id name="id" type="java.lang.Integer">
                <column name="ID" />
                <generator class="increment" />
            </id>
            <property name="name" type="java.lang.String">
                <column name="NAME" />
            </property>
            <set name="course" cascade="save-update" table="STUDENT_COURSE">
                <key column="studentID"></key>
                <many-to-many class="domain.Course" column="courseID"/>
            </set>
            <many-to-one name="classes" class="domain.Classes" column="classesID" cascade="save-update"></many-to-one>
        </class>

    (2) 使用

            List list=session.createQuery("from domain.Classes c inner join c.students s inner join s.course ").list();

      

  • 相关阅读:
    codeforces 1198B
    POJ 3177 Redundant Paths (tarjan边双连通分量)
    Geotrellis系列文章链接
    geotrellis使用(十一)实现空间数据库栅格化以及根据属性字段进行赋值
    geotrellis使用(十)缓冲区分析以及多种类型要素栅格化
    geotrellis使用(九)使用geotrellis进行栅格渲染
    geotrellis使用(八)矢量数据栅格化
    geotrellis使用(七)记录一次惨痛的bug调试经历以及求DEM坡度实践
    Parallel并行化编程
    geotrellis使用(六)Scala并发(并行)编程
  • 原文地址:https://www.cnblogs.com/xingdongpai/p/5138147.html
Copyright © 2011-2022 走看看