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

      

  • 相关阅读:
    Javascript 组成:ECMAscript、Dom、Bom
    js字符串的操作
    函数(方法)基本内容
    for循环运用,三角形
    Java Script 数组
    控制语句—for循环、while循环
    JavaScript基础内容
    网站创建中遇到的问题
    数据库无法启动ORA-01034: ORACLE not available
    关于数据库管理员安全和权限
  • 原文地址:https://www.cnblogs.com/xingdongpai/p/5138147.html
Copyright © 2011-2022 走看看