2013-11-20 5 views
1

Я скачал гибернации один-ко-многим пример, который имел следующий файл отображения:Где родительские/дочерние отношения хранятся в 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> 

Программа проходит гладко, но я новичок в спящий режим, я просто хочу понять, что информацию о сотрудниках хранится в таблице СОТРУДНИК информация сертификата хранится в таблице сЕРТИФИКАТ, теперь, потому что один сотрудник может иметь множество сертификатов, которые мы использовали один-ко-многим, т.е., добавив в файл отображения:

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

Но теперь то, что я хочу, чтобы понять, что когда мы получаем запись из таблицы EMPLOYEE, как я могу получить доступ к сертификату что я не понимаю, так это то, что моя таблица EMPLOYEE имеет только четыре столбца «id», «firstname», «lastname» и «pay», поэтому, когда я беру запись, объект также имеет сертификаты ,

Во многих случаях обычно используется ссылочная (промежуточная) таблица. Это позволяет SQL или любой другой базе данных поддерживать отношения и спящий режим просто полагается на сопоставление, чтобы вытащить нужный материал из базы данных. Но как это работает с отображением «один ко многим»?

ответ

-1

В вашем случае employeeId будет доступен в таблице Certificate. Он будет работать как внешний ключ для таблицы сотрудников.

+0

Пожалуйста, посмотрите, что я спрашиваю, таблица EMPLOYEE имеет только четыре столбца. Идентификатор id, firstname, lastname, зарплата и таблица имеют только два идентификатора и имени. Когда я беру запись у сотрудника, я могу вытащить его сертификаты, которые, как я знаю, это то, как работает спящий режим, но как это происходит. Когда хранятся дочерние отношения родителя –

+0

Я не знаю, это то, о чем вы говорили, но после многих исследований это все, что я нашел ». В таблице CERTIFICATE будет столбец с именем« employee_id »(который ссылается на id-столбец вашей таблицы EMPLOYEE и принудительно применяется с помощью ограничения внешнего ключа.) «В любом случае, спасибо за ваш ответ, я отметил его как ответ и одобрен. –

+0

Да. Об этом я упомянул в первом посте. Спасибо :) – ShadowHunter

Смежные вопросы