主键关联-双向
User的主键自动生成
Person的主键来源于User的主键
此处 <one-to-one>中的constrained="true" 意味着Person有一个fk指向User
如果只需要单向,则将User.hbm.xml中的<one-to-one>标签去掉
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.lohamce.hibernate">
<class name="User" table="t_user">
<id name="id">
<generator class="native" />
</id>
<property name="name" />
<property name="password" />
<property name="createTime" />
<property name="expireTime" />
<many-to-one name="group" column="groupId" />
<!-- cascade:默认为none all:增删改都会级联处理 但是不建议如此处理,应该按照业务逻辑来进行操作,而不是通过配置来处理 -->
<one-to-one name="person" property-ref="user" />
</class>
</hibernate-mapping><?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.lohamce.hibernate">
<class name="Person" table="t_person">
<id name="id">
<generator class="native" />
</id>
<property name="firstName" />
<property name="lastName" />
<many-to-one name="user" unique="true" column="userId" />
</class>
</hibernate-mapping>
唯一外键关联-单向
实质上是Many2One的特殊情况
Person.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.lohamce.hibernate">
<class name="Person" table="t_person" >
<id name="id">
<generator class="native" />
</id>
<property name="firstName" />
<property name="lastName" />
<many-to-one name="user" unique="true" column="userId"/>
</class>
</hibernate-mapping>
唯一外键关联-双向
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.lohamce.hibernate">
<class name="User" table="t_user" >
<id name="id">
<generator class="native" />
</id>
<property name="name" />
<property name="password" />
<property name="createTime" />
<property name="expireTime" />
<many-to-one name="group" column="groupId" />
<!--
cascade:默认为none
all:增删改都会级联处理
但是不建议如此处理,应该按照业务逻辑来进行操作,而不是通过配置来处理
-->
<one-to-one name="person" property-ref="user"/>
</class>
</hibernate-mapping>需要配置property-ref属性
本文介绍Hibernate中主键关联的双向配置方法及唯一外键关联的单向与双向配置。主要内容包括User和Person类之间的主键关联实现,其中详细解释了如何通过XML映射文件设置自动生成主键、外键约束以及关联关系。
383

被折叠的 条评论
为什么被折叠?



