Как сделать слабую сущность используя EJB 3.0 - PullRequest
2 голосов
/ 11 ноября 2009

предположим, у меня есть сущность "Сотрудник" и сущность "Адрес". Сотрудник имеет адрес, связанный с ним / ней. В смысле реляционной базы данных таблица адресов будет считаться слабой сущностью, поскольку адрес сотрудника не может существовать, если в базе данных нет соответствующего сотрудника. Итак, предположим, что я хочу смоделировать следующее:

Таблица: сотрудник

EmployeeID | Имя

Адрес таблицы

EmployeeID | StreetName

Для таблицы Employee первичным ключом является EmployeeID. Для таблицы Address первичным ключом является EmployeeID, но он также является внешним ключом таблицы Employee. Как бы вы смоделировали это в EJB 3.0, используя j2ee? Когда я создаю класс сущности с именем Employee, я могу установить аннотацию @id над employeeId, чтобы пометить этот атрибут как первичный ключ. Однако когда я создаю объект Address, я хочу установить атрибут employeeID как первичный ключ, так и внешний (связать его с таблицей Employee). Есть ли аннотация для этого? Надеюсь, я прояснил свой вопрос. Спасибо.

дБ

1 Ответ

3 голосов
/ 11 ноября 2009

Вероятно, не очень хорошая идея отображать Address как отдельную сущность - его жизнь не только контролируется его владельцем (например, сотрудником), как вы сказали, но вы также не хотите делить один и тот же экземпляр Address между разными сотрудниками .

Рассмотрите возможность сопоставления этого как @ Embeddable вместо:

@Embeddable
public class Address {
  private String streetName;
  ...
}

@Entity
public class Employee {
  @Embedded
  private Address address;
  ...
}

Обратите внимание, что выше будет отображать столбцы адреса в таблице сотрудников; если вы предпочитаете хранить отдельную таблицу, вы можете перезаписать ее, используя аннотацию @ JoinTable .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...