有Customer.java和Order.java两个类,分别代表客户表和定单表,建立单向一对多的关系。
customer.java的代码如下:
package mypack;
import java.io.Serializable;
public class Customer implements Serializable{
private Long id;
private String name;
//此处省略构造方法,以及id和name属性的访问方法
}
Order.java的代码如下:
package mypack;
import java.io.Serializable;
public class Order implements Serializable{
private Long id;
private String orderNumber;
private Customer customer;
//此处省略构造方法,以及id和orderNumber属性的访问方法
public Customer getCustomer(){
return customer;
}
public void setCustomer(Customer customer){
this.customer = customer;
}
}
注意到,在Order.java里有个customer的成员变量,为Customer类型。
建立关联的xml源代码。
Customer.hbm.xml如下:
<hibernate-mapping>
<class name="mypack.Customer" table="CUSTOMER">
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<property name="name" type="string">
<column name="NAME" length="15"/>
</property>
</class>
</hibernate-mapping>
Order.hbm.xml如下:
<hibernate-mapping>
<class name="mypack.Order" table="ORDERS">
<id name="id" type="long" column="ID">
<generator class="increment"/>
</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>
在Order.hbm.xml文件中使用<many-to-one>元素映射一对多的关联。它包括以下属性:
.name:设定待映射的持久化类的属性名,此处为Order类的customer属性。
.column:设定和持久化类的属性对应的表的外键,此处为ORDERS表的外键CUSTOMER_ID。
.class:设定持久化类的属性的类型,此处设定customer属性为Customer类型
.not-null:如果为true,表示customer属性不允许为null,该属性默认值为false。
customer.java的代码如下:
package mypack;
import java.io.Serializable;
public class Customer implements Serializable{
private Long id;
private String name;
//此处省略构造方法,以及id和name属性的访问方法
}
Order.java的代码如下:
package mypack;
import java.io.Serializable;
public class Order implements Serializable{
private Long id;
private String orderNumber;
private Customer customer;
//此处省略构造方法,以及id和orderNumber属性的访问方法
public Customer getCustomer(){
return customer;
}
public void setCustomer(Customer customer){
this.customer = customer;
}
}
注意到,在Order.java里有个customer的成员变量,为Customer类型。
建立关联的xml源代码。
Customer.hbm.xml如下:
<hibernate-mapping>
<class name="mypack.Customer" table="CUSTOMER">
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<property name="name" type="string">
<column name="NAME" length="15"/>
</property>
</class>
</hibernate-mapping>
Order.hbm.xml如下:
<hibernate-mapping>
<class name="mypack.Order" table="ORDERS">
<id name="id" type="long" column="ID">
<generator class="increment"/>
</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>
在Order.hbm.xml文件中使用<many-to-one>元素映射一对多的关联。它包括以下属性:
.name:设定待映射的持久化类的属性名,此处为Order类的customer属性。
.column:设定和持久化类的属性对应的表的外键,此处为ORDERS表的外键CUSTOMER_ID。
.class:设定持久化类的属性的类型,此处设定customer属性为Customer类型
.not-null:如果为true,表示customer属性不允许为null,该属性默认值为false。