Какой тип коллекции можно выбрать при отображении в спящем режиме - PullRequest
3 голосов
/ 11 августа 2011

У меня есть две сущности, т. Е. Клиент и заказ. Клиент, имеющий несколько заказов. Я пытаюсь двунаправить один ко многим и много к одному. Так, какой объект коллекции я могу выбрать, т. Е. Сумку, карту и т. Д. Могу ли я выбрать объект коллекции, используя двунаправленный корабль отношения один-ко-многим и многие-к-одному?

1 Ответ

2 голосов
/ 11 августа 2011

Если каждый Заказ уникален и клиент не может иметь один и тот же Заказ дважды в одной и той же коллекции, используйте Set, в противном случае используйте List

Прежде всего, помните, что вы ДОЛЖНЫ переопределить функции equals () и hashCode ()для каждого класса:

При использовании Списка вы можете отобразить его по-разному:

  • Упорядоченные списки, где порядок не материализован в базе данных
  • Индексированные спискигде заказ материализован в базе данных

Упорядоченный список реализуется следующим образом:

@OneToMany(mappedBy="customer")
   @OrderBy("number")
   public List<Order> getOrders() { return orders; }

Индексированный список отображается следующим образом:

  @OneToMany(mappedBy="customer")
   @OrderColumn(name="orders_index")
   public List<Order> getOrders() { return orders; }

Чтобы сохранить значение индекса в выделенном столбце, используйте аннотацию @javax.persistence.OrderColumn для вашей собственности.Эта аннотация описывает имя столбца и атрибуты столбца, в которых хранится значение индекса.Этот столбец размещен в таблице, содержащей внешний ключ ассоциации.Если имя столбца не указано, по умолчанию используется имя свойства ссылки, за которым следует подчеркивание, за которым следует ORDER (в следующем примере это будет orders_ORDER).

An, если вы хотите использовать Set<Order> это очень просто:

  @OneToMany(mappedBy="customer")
  public Set<Order> getOrders() { return orders; }

Надеюсь, это поможет.

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