【问题标题】:Where is the parent/child relationship stored in Hibernate?Hibernate 中的父/子关系存储在哪里?
【发布时间】:2013-11-20 17:10:22
【问题描述】:

我下载了一个 Hibernate 一对多示例,其中包含以下映射文件:

<hibernate-mapping>
   <class name="Employee" table="EMPLOYEE">
      <meta attribute="class-description">
         This class contains the employee detail. 
      </meta>
      <id name="id" type="int" column="id">
         <generator class="native"/>
      </id>
      <set name="certificates" cascade="all">
         <key column="employee_id"/>
         <one-to-many class="Certificate"/>
      </set>
      <property name="firstName" column="first_name" type="string"/>
      <property name="lastName" column="last_name" type="string"/>
      <property name="salary" column="salary" type="int"/>
   </class>

   <class name="Certificate" table="CERTIFICATE">
      <meta attribute="class-description">
         This class contains the certificate records. 
      </meta>
      <id name="id" type="int" column="id">
         <generator class="native"/>
      </id>
      <property name="name" column="certificate_name" type="string"/>
   </class>

</hibernate-mapping>

程序运行顺利,但我是Hibernate的新手,我只想了解员工信息存储在表EMPLOYEE中,证书信息存储在表CERTIFICATE中,现在因为一个员工可以拥有许多我们一对一使用的证书许多映射,即通过将其添加到映射文件:

  <set name="certificates" cascade="all">
     <key column="employee_id"/>
     <one-to-many class="Certificate"/>
  </set>

但是现在我想了解的是,当我们从表 EMPLOYEE 中获取记录时,我如何能够访问该员工的证书,我不明白的是我的表 EMPLOYEE 只有四列“id” , 'firstname', 'lastname' 和 'salary' 那么当我获取记录时,该对象也带有证书。

在多对多情况下,通常使用链接(中间)表。这允许 SQL 或任何数据库来维护关系,并且休眠只依赖于映射将正确的内容从数据库中提取出来。但是它如何管理一对多映射

【问题讨论】:

    标签: hibernate hibernate-mapping


    【解决方案1】:

    在您的情况下,employeeId 将在 Certificate 表中可用。它将作为员工表的外键。

    【讨论】:

    • 请看我在问什么,表 EMPLOYEE 只有四列 id、firstname、lastname、salary,而表证书只有两个 id 和 name。当我从员工那里提取记录时,我也可以提取他的证书,我知道休眠应该如何工作,但它是如何发生的。父子关系存储在哪里
    • 我不知道这是否也是你所说的,但经过大量研究,这就是我发现的全部内容。“在 CERTIFICATE 表中将有一个名为“employee_id”的列。(其中引用您的 EMPLOYEE 表的 id 列,并由外键约束强制执行。)” 无论如何,感谢您的回答,我已将其标记为答案并已投票。
    • 是的。这是我在第一篇文章中提到的。谢谢你:)
    猜你喜欢
    • 2016-08-09
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 2011-04-10
    相关资源
    最近更新 更多