• Hibernate学习笔记(一):级联删除


    Hibernate学习笔记(一):级联删除

     

    一对多的关系映射

    在一的一方配置文件中将会配置set节点信息:

    *.hbm.xml配置文件中set节点的属性:

             Lazy:默认是true 即使用延迟加载,false表示即时加载;

             Order-by:一的一方set集合内多的一方实体集合的排序方式 默认是主键排序 但可以更改;

             Cascade:是否使用级联操作;配置方法:cascade的值有如下几个;

          all: 所有情况下均进行关联操作,即save-update和delete。

          none: 所有情况下均不进行关联操作。这是默认值。 

          save-update: 在执行save/update/saveOrUpdate时进行关联操作。 

          delete: 在执行delete 时进行关联操作。

          all-delete-orphan: 当一个节点在对象图中成为孤儿节点时,删除该节点

             Inverse:反转。True表示由对方负责控制,false表示由自己控制。

    级联删除:(在一的一方的配置文件中set节点进行配置)

      cascade的值使用all表示对所有操作都级联;

      把set节点的属性inverse的值改为true:

      就可以实现级联删除了,即删除一的一方后,在多的一方中引用到一的一方的主键的全部记录将会被删除

    一对多中的‘一’

      vo

    复制代码
    package org.sunny.shop.vo;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    import java.util.Set;
    
    public class Category {
    
        private int cid;
        private String cname;
        private Date dateinsert ;
        private Date dateupdate ;
      //利用集合来与多的一方关联
        private Set<Category2th> category2thSet;
    
        /*
       *
       *剩下的为setter、getter方法
       *
       */
    
    }
    复制代码

      Category.hbm.xml

    复制代码
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
        <class name="org.sunny.shop.vo.Category" table="category">
            <id name="cid" column="cid">
                <generator class="identity" />
            </id>
            <property name="cname" />
            <property name="dateinsert" />
            <property name="dateupdate" />
            
            <!-- 配置二级分类的集合 -->
            <set order-by="csid" name="category2thSet" lazy="false" cascade="all" inverse="true">
                <key column="cid"/>
                <one-to-many class="org.sunny.shop.vo.Category2th"/>
            </set>
        </class>
    </hibernate-mapping>
    复制代码

    一对多中的‘多’

      vo

    复制代码
    package org.sunny.shop.vo;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Set;

    public class Category2th { private int csid; private String csname; // 分类添加时间 private Date dateinsert; // 分类更新时间 private Date dateupdate; private Category category;   //用vo类与一对多中的‘一’关联 private Set<Product> productSet; /*    *    *剩下的是setter、getter方法    *    */ }
    复制代码

      Category2th.hbm.xml

    复制代码
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
        <class name="org.sunny.shop.vo.Category2th" table="categorysecond">
            <id name="csid" column="csid">
                <generator class="identity" />
            </id>
            <property name="csname"/>
            <property name="dateinsert" />
            <property name="dateupdate" />
            
            <!-- 二级分类与一级分类的关联 -->
            <many-to-one name="category" lazy="false" class="org.sunny.shop.vo.Category">
                <column name="cid"></column>
            </many-to-one>
        </class>
    </hibernate-mapping>
  • 相关阅读:
    SVN被锁定解决办法
    onchange监听input值变化及input隐藏后change事件不触发的原因与解决方法(设置readonly后onchange不起作用的解决方案)
    button的格式的问题
    javaScript年份下拉列表框内容为当前年份及前后50年
    ORACLE导入、导出所有数据到文件的SQL语句
    Oracle存储过程学习笔记
    SQlServer的日期相减(间隔)datediff函数
    td中嵌套table,让table完全填充父元素td
    Cause: org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: java.sql.SQLException: 不支持的特性
    HTML认知
  • 原文地址:https://www.cnblogs.com/ylsx/p/13219121.html
Copyright © 2020-2023  润新知