Hibernate中存储的父/子关系在哪里?

时间:2013-11-20 08:53:32

标签: hibernate hibernate-mapping

我下载了一个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只依赖于映射来从数据库中提取正确的东西。但它如何通过一对多映射进行管理

1 个答案:

答案 0 :(得分:-1)

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