hibernate一对多级联保存及删除(总结)

  以下为项目开发中总结:

 hibernate一对多级联保存及删除:

   采购单表头及单据行信息保存

    1. 采购单表头对象 ("一方" 对象)

//采购单表头:(一方)

public class PssBuyHead implements java.io.Serializable {
 private Integer buyid;
 private PssDepot pssDepot;
 private PssSupplier pssSupplier;
 private TSysUser TSysUser;
 private String buynum;
 private String buybills;
 private Date buydate;
 private String buydes;
 private Integer buytotal;
 private String isok;
 private String buytype;
 private Date createdate;
 private Integer createpeople;
 private Integer sumnum;
 private Float sumprice;
 private Set<PssBuyLine> pssBuyLines = new HashSet<PssBuyLine>(0);
 (get...set...方法省略)

   采用set集合对行信息的关联  

   private Set<PssBuyLine> pssBuyLines = new HashSet<PssBuyLine>(0);

    采购单行信息对象 ("多方"对象)

public class PssBuyLine implements java.io.Serializable {

	private Integer productlinid;
	private PssBuyHead pssBuyHead;
	private String productbm;
	private String productname;
	private String standard;
	private String unit;
	private Integer productsum;
	private Float inprice;
	private Float buysummoney;
	private String product;
	private String productnum;
	private String productdes;

(get... set ...)

    头信息对象

 

     private PssBuyHead pssBuyHead;
 

2. 映射对象 .hbm.xml对象

     "一方" 采购单头信息

<hibernate-mapping>
    <class name="com.business.buy.pojo.PssBuyHead" table="pss_buy_head">
        <id name="buyid" type="java.lang.Integer">
            <column name="BUYID" precision="8" scale="0"/>
            <generator class="increment"/>
        </id>
        <many-to-one name="pssDepot" class="com.business.base.pojo.PssDepot" lazy="false"  fetch="select">
            <column name="DEPOTID" precision="8" scale="0">
                <comment>仓库代码</comment>
            </column>
        </many-to-one>
        <many-to-one name="pssSupplier" class="com.business.base.pojo.PssSupplier" lazy="false" fetch="select">
            <column name="SUPPLIERID" precision="8" scale="0">
                <comment>供应商代码</comment>
            </column>
        </many-to-one>
        <many-to-one name="TSysUser" class="com.popedom.dyhx.pojo.TSysUser" lazy="false" fetch="select">
            <column name="USERID" precision="8" scale="0">
                <comment>用户ID</comment>
            </column>
        </many-to-one>
        <property name="buynum" type="java.lang.String">
            <column name="BUYNUM" length="20" />
        </property>
        <property name="buybills" type="java.lang.String">
            <column name="BUYBILLS" length="20" />
        </property>
        <property name="buydate" type="java.util.Date">
            <column name="BUYDATE" length="19" />
        </property>
        <property name="buydes" type="java.lang.String">
            <column name="BUYDES" length="40" />
        </property>
        <property name="buytotal" type="java.lang.Integer">
            <column name="BUYTOTAL" />
        </property>
        <property name="isok" type="java.lang.String">
            <column name="ISOK" length="10" />
        </property>
        <property name="buytype" type="java.lang.String">
            <column name="BUYTYPE" length="10" />
        </property>
        <property name="createdate" type="java.util.Date">
            <column name="CREATEDATE" length="19" />
        </property>
        <property name="createpeople" type="java.lang.Integer">
            <column name="CREATEPEOPLE" />
        </property>
        <property name="sumnum" type="java.lang.Integer">
            <column name="SUMNUM" />
        </property>
        <property name="sumprice" type="java.lang.Float">
            <column name="SUMPRICE" precision="10" />
        </property>
        <set name="pssBuyLines" inverse="false" lazy="false" cascade="all">
            <key>
                <column name="BUYID" precision="8" scale="0" />
            </key>
            <one-to-many class="com.business.buy.pojo.PssBuyLine" />
        </set>
    </class>
</hibernate-mapping>

    "一"方关联"多方"对象

 

       <set name="pssBuyLines" inverse="false" lazy="false" cascade="all">
            <key>
                <column name="BUYID" precision="8" scale="0" />
            </key>
            <one-to-many class="com.business.buy.pojo.PssBuyLine" />
        </set>
   

    采购单行信息(“多方”)

<hibernate-mapping>
    <class name="com.business.buy.pojo.PssBuyLine" table="pss_buy_line">
        <id name="productlinid" type="java.lang.Integer">
            <column name="PRODUCTLINID" precision="8" scale="0"/>
            <generator class="increment"/>
        </id>
        <many-to-one name="pssBuyHead" class="com.business.buy.pojo.PssBuyHead" fetch="select">
            <column name="BUYID" precision="8" scale="0" />
        </many-to-one>
        <property name="productbm" type="java.lang.String">
            <column name="PRODUCTBM" length="20" />
        </property>
        <property name="productname" type="java.lang.String">
            <column name="PRODUCTNAME" length="30" />
        </property>
        <property name="standard" type="java.lang.String">
            <column name="STANDARD" length="20" />
        </property>
        <property name="unit" type="java.lang.String">
            <column name="UNIT" length="8" />
        </property>
        <property name="productsum" type="java.lang.Integer">
            <column name="PRODUCTSUM" />
        </property>
        <property name="inprice" type="java.lang.Float">
            <column name="INPRICE" precision="10" />
        </property>
        <property name="buysummoney" type="java.lang.Float">
            <column name="BUYSUMMONEY" precision="10" />
        </property>
        <property name="product" type="java.lang.String">
            <column name="PRODUCT" length="20" />
        </property>
        <property name="productnum" type="java.lang.String">
            <column name="PRODUCTNUM" length="20" />
        </property>
        <property name="productdes" type="java.lang.String">
            <column name="PRODUCTDES" length="30" />
        </property>
    </class>
</hibernate-mapping>

    "多方"关联"一方"对象

 

       <many-to-one name="pssBuyHead" class="com.business.buy.pojo.PssBuyHead" fetch="select">
            <column name="BUYID" precision="8" scale="0" />
        </many-to-one>

 (以上代码调试通过)


    总结: 1,一对多关联;

                2,“一”方维护关系;(inverse="false" lazy="false" cascade="all")

                3;级联操作并删除孤儿;
            (inverse,cascade不能再“多”方的配置文件<many-to-one.../>中配置)

   

     -----配置文件相关配置参数说明-----

     cascade:级联,可选值为:none,save-update,delete,all,all-delete-orphan 
    
inverse: 反转,表示由哪方维护关系false为自己维护,可选值:true,false

    lazy: true/false ; false 为非延迟加载

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值