Hibernate一对多双向关联

本文探讨了Hibernate中一对多双向关联的实现方式,并通过具体的Customer和Order实例详细介绍了如何配置XML映射文件来建立这种关联关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                     Hibernate一对多双向关联 

          在测试一对多双向关联时,产生了一点疑问,同inverse属性相关。

1、数据库结构

           customer表:{ customerId , customerName}

           orders表:{ orderId , orderName , idCustomer},其中idCustomer是外键,表示customer的ID。

          (本人采用的是MS SQL SERVER 2000个人版,刚开始时新建了一个order表,结果老是报错,说' order '附近有语法错误,后来才明白order是数据库的关键字。因此,千万不要与数据库关键字重名!)

2、Customer.hbm.xml

<hibernate-mapping>
    
<class name="com.persistent.Customer" table="customer">
        
<id name="id" column="customerId" unsaved-value="null">
            
<generator class="increment"></generator>
        
</id>
        
<property name="name" column="customerName"></property>
        
<set name="orders" cascade="all"  lazy="false">
            
<key column="idCustomer"></key>
            
<one-to-many class="com.persistent.Order"/>
        
</set>
    
</class>
</hibernate-mapping>

3、Order.hbm.xml

<hibernate-mapping>
    
<class name="com.persistent.Order" table="orders">
        
<id name="id" column="orderId" unsaved-value="null">
            
<generator class="increment"></generator>
        
</id>
        
<property name="name" column="orderName"></property>
        
<many-to-one name="customer" 
                     column
="idCustomer"
                     class
="com.persistent.Customer"
                     lazy
="false"
                     cascade
="all">
        
</many-to-one>
    
</class>
</hibernate-mapping>

4、Customer.java和Order.java

public class Customer {
private Long id;
private String name;
private Set orders = new HashSet();
...
}


public class Order {
private Long id;
private String name;
private Customer customer;
...
}

5、结果

          在测试<set/>的inverse属性时,发现不论inverse为true还是false,单独保存customer或者order都能正确进行,好像此时inverse没起到作用一般,有点疑惑,难道映射文件有误?!

                         *****************************************************************************************

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值