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没起到作用一般,有点疑惑,难道映射文件有误?!
*****************************************************************************************
本文探讨了Hibernate中一对多双向关联的实现方式,并通过具体的Customer和Order实例详细介绍了如何配置XML映射文件来建立这种关联关系。
1234





