文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
基于主键
介绍
如果采用基于主键的映射策略,则一端的主键生成器需要使用 foreign 策略,表明将根据对方的主键来生成自己的主键,本实体不能拥有自己的主键声称策略。 <param>
子元素指定使用当前持久化类的哪个属性作为“对方”。
<generator class="foreign" >
<param name="property">manager</param>
</generator>
当然,任意一端都可以采用 foreign 主键生成器策略,表明将根据对方主键来生成自己的主键。
采用 foreign 主键生成器策略的一端增加 one-to-one 元素映射相关属性,其 ont-to-one 属性还应增加 constrained=true
属性;另一端增加 one-to-one 元素映射关联属性。
constrained:指定为当前持久化类对应的数据库表的主键添加一个外键约束,引用被关联对象所对应的数据库主键。
代码
实体类与上文中的实体类相同。
Manager.hbm.xml
<hibernate-mapping package="com.lihui.hibernate.double_1_1.primary">
<class name="Manager" table="MANAGERS">
<id name="mgrId" type="java.lang.Integer">
<column name="MGR_ID" />
<generator class="native" />
</id>
<property name="mgrName" type="java.lang.String">
<column name="MGR_NAME" />
</property>
<one-to-one name="department" class="Department"></one-to-one>
</class>
</hibernate-mapping>
Department.hbm.xml
<hibernate-mapping package="com.lihui.hibernate.double_1_1.primary">
<class name="Department" table="DEPARTMENTS">
<id name="deptId" type="java.lang.Integer">
<column name="DEPT_ID" />
<generator class="foreign" >
<param name="property">manager</param>
</generator>
</id>
<property name="deptName" type="java.lang.String">
<column name="DEPT_NAME" />
</property>
<one-to-one name="manager" class="Manager" constrained="true"></one-to-one>
</class>
</hibernate-mapping>
我最近在复习一下关于 Hibernate 关系映射的知识,看了书本的介绍以及视频。这几篇博客都是对学到知识的一点总结。当然,这些这是最基本的能够实现关联关系的配置,在实际的使用中,还有很多参数需要根据情况来设置。但也算是对以后开发过程中遇到遗忘的地方可以进行查阅。
在本文中使用的 Demo 也都已经上传到 github 中,里边有详细的运行说明。
Github 地址: HibernateRelationMapping
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论