Hibernate 一对多关联关系

一. 多对一单向关联关系   
    Order类对于Customer类存在多对一关系,Customer类实例是Order类的一个属性
    public class Order implements Serializable{
       private Long id;
       private String orderNumber;
        private Customer customer;
 
       ...
    }
 
    Order.hbm.xml中就需要配置这种多对一的关系
    <hibernate-mapping>
       <class name="mypack.Order" table="ORDERS">
         <id name="id" type="long" column="ID">
         </id>
         <property name+"orderNumber" type="string">
           <column name="ORDER_NUMBER" length="15" />
         </property>
 
       <many-to-one
           name="customer"
           column="CUSTOMER_ID"
           class="mypack.Customer"
           not-null="true"
       />
      </class>
    </hibernate-mapping>
 
    CUSTOMER_ID在数据库表中是一个外键,指向CUSTOMERS(ID)
    另外not-null属性是应该特别注意的,它设置为true时,它保证当你保持久化Order实例的时候,customer属性一定已经是被持久化的对象,如果此时customer对象仍是临时对象(只保存在内存中),hibernate将产生异常。
 
    此外,我们可以级联保存和更新Order,在xml中需要做如下设置:
       <many-to-one
           name="customer"
           column="CUSTOMER_ID"
           class="mypack.Customer"
           cascade="save-update"
           not-null="true"
       />
   casacade属性默认为none,当被设置成save-update时,你保存更新当前order对象时,hibernate会级联保存和更新相连的customer。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值