我是hibernate世界的新手,请您指教,我在Hibernate中经历了一对一的关系,根据我的分析,可以通过三种方式建立一对一的hibernate关系。
1)Through Join concept
2)Same primary key in both the tables
3)Primary key and foriegn key relationship in both the tables
请指教,以上三种实现一对一映射的方法是正确的,或者我遗漏了什么,请指教,也请指教我使用的以下hbm映射文件是正确的。如果不是,请指教。
1)通过加入概念:-
实现一对一关系的一种方法是通过加入概念,以下xml被用于
<hibernate-mapping>
<class name="mypack.Person" table="person21">
<id name="personId" type="int">
<generator class="increment">
</generator>
</id>
<property name="name"/>
<join table="personAddress">
<key column="personId"/>
<many-to-one name="address" class="mypack.Address" column="addressId" unique="true" cascade="all"/>
</join>
</class>
<class name="mypack.Address" table="address21">
<id name="id" column="addressId" type="int">
<generator class="increment"/>
</id>
<property name="city"/>
<property name="state"/>
</class>
</hibernate-mapping>
2)两个表中的主键相同:-
在两个表中使用相同的主键,以下 hbm 被用于
<class name="mypack.Address" table="address31">
<id name="id" column="addressId" type="int">
<generator class="increment"/>
</id>
<property name="city"/>
<property name="state"/>
</class>
<class name="mypack.Person" table="person31">
<id name="personId" type="int">
<generator class="foreign">
<param name="property">address</param>
</generator>
</id>
<property name="name"/>
<one-to-one name="address" class="mypack.Address"/>
</class>
</hibernate-mapping>
3)两个表中的主键和外键关系:-
一个表中的主键和另一个表中的外键。下面是这个的hbm
<hibernate-mapping>
<class name="mypack.Person">
<id name="personId" type="int">
<generator class="increment"/>
</id>
<property name="name"/>
<many-to-one name="address" class="mypack.Address" column="addressId" unique="true" cascade="all"/>
</class>
<class name="mypack.Address">
<id name="id" column="addressId" type="int">
<generator class="increment"/>
</id>
<property name="city"/>
<property name="state"/>
</class>
</hibernate-mapping>
请大家指教。