返回介绍

基于主键

发布于 2025-01-04 01:27:28 字数 2286 浏览 0 评论 0 收藏 0

介绍

如果采用基于主键的映射策略,则一端的主键生成器需要使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文