Как сделать одно-однозначное отображение гибернации, используя не первичный ключ в качестве ссылок - PullRequest
1 голос
/ 03 января 2012

Я пытаюсь сделать XML-отображение Hibernate для отношения один к одному для таблиц

Пользователь (UserId, Name, StatusId) Status (StatusId, StatusName)

я пробовал эточто я нашел на форуме

Под User.hbm.xml

  <many-to-one class="Status" name="statusid" property-ref="statusid">
    <column name="statusname" />
  </many-to-one>

и потому я получил эту ошибку

SEVERE: Ошибка первоначального создания SessionFactory.java.lang.NullPointerException ПРЕДУПРЕЖДЕНИЕ: StandardWrapperValve [по умолчанию]: PWC1406: Servlet.service () для сервлета по умолчанию вызвало исключение java.lang.ExceptionInInitializerError

Когда я использую PK в качестве ссылки, я не получаю эту ошибку..

Кто-нибудь может объяснить, что означает свойство и почему я получаю эту ошибку?PS: я нахожусь в стадии обучения, пожалуйста, помогите>. <</p>

Ответы [ 2 ]

1 голос
/ 06 января 2012

О, вы действительно хотите присоединиться к User.statusid = Status.statusname? Это означает, что statusname является альтернативным ключом для Status.

В вашем свойстве ref вы должны установить свойство объекта Status, на который вы ссылаетесь. См. Ассоциации на альтернативных ключах :

<many-to-one class="Status" name="statusid" property-ref="statusname"/>
1 голос
/ 06 января 2012

если у вас нет чего-то особенного, должно работать следующее отображение.Тем не менее, всегда полезно иметь полную трассировку стека .

  <many-to-one class="Status" name="statusid" column="StatusId" />
...