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();

      

  • 相关阅读:
    BZOJ 2789: [Poi2012]Letters 树状数组 + 逆序对
    luogu 5468 [NOI2019]回家路线 最短路/暴力
    BZOJ 2427: [HAOI2010]软件安装 tarjan + 树形背包
    练手爬虫用urllib模块获取
    django安装以及配置
    web框架
    模拟百度进行图片搜索,有问题可以留言
    深入requests库params|data|json参数
    深入理解http1.x、http 2和https
    nodejs 实现 磁力链接资源搜索 BT磁力链接爬虫
  • 原文地址:https://www.cnblogs.com/xingdongpai/p/5138147.html
Copyright © 2011-2022 走看看