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

      

  • 相关阅读:
    JAVA视频网盘分享
    IntelliJ IDEA 2016 完美破解+汉化补丁
    献给java求职路上的你们
    java集合类
    MyEclipse编码设置
    国内外有名的java论坛
    百度编辑器ueditor的简单使用
    工厂模式
    Java静态工厂的理解
    git clone index-pack failed
  • 原文地址:https://www.cnblogs.com/xingdongpai/p/5138147.html
Copyright © 2011-2022 走看看