Первичный ключ отображения Hibernate с использованием идентификатора другого класса - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть две таблицы MySQL: User (с автоматически увеличиваемым идентификатором pk) и WaitingUser, представляющий собой список подмножеств пользователей. Таблица WaitingUsers не может содержать более одного вхождения пользователя, поэтому столбец userId - PK.

public class User implements Serializable{
   private int id;
   private String userName;
....

TABLE USER:
id               int(10) unsigned PK
userName         varchar(45)

public class WaitingUser implements Serializable{
   private User userId;
   private String otherinfo;
....

TABLE WAITING_USER:
userId               int(10) unsigned PK
otherinfo            varchar(45)

Теперь я хотел бы нанести на карту, но я не знаю, как поступить.

Проблема похожа на описанную здесь, но я не использую аннотацию:

Использование сущности (и ее первичного ключа) в качестве идентификатора другой сущности

Как определить, что PK WaitingUser - это PK пользователя в файле WaitingUser.xbm.xml?

1 Ответ

1 голос
/ 08 декабря 2011

С в спящих документах :

Вы можете отобразить идентификатор ссылочного класса (первичный ключ ссылочной таблицы) на идентификатор ссылочного класса (первичный ключ ссылочной таблицы) с помощью hbm.xml следующим образом:

<class name="WaitingUser">
  <id name="id">
    <generator class="foreign">
      <param name="property">userId</param>
    </generator>
  </id>
  <one-to-one name="userId" class="User" constrained="true"/>
</class>
...