Как сопоставить карту из сущности в значение с аннотациями гибернации? - PullRequest
1 голос
/ 05 февраля 2009

У меня есть отгрузка и продукт лица. Каждая партия состоит из любого количества любого количества продуктов. То есть у отгрузки есть поле с именем products, которое представляет собой java.util.Map, ключом которого является отгружаемый товар, а значением является количество экземпляров отгружаемого товара.

Как мне сопоставить это с БД с аннотациями в спящем режиме?

Ответы [ 2 ]

1 голос
/ 10 февраля 2009

Это то, что вы должны сделать. Поле map относится к классу Shipment и отображает каждый Product на количество отгруженных продуктов.

Это не будет работать, если вы не определите должным образом методы equals и hashCode в классе Product, которые не зависят от сгенерированных идентификаторов hibernate. (Или прочитайте полную историю здесь ).

@CollectionOfElements(targetElement=Integer.class)
@MapKeyManyToMany(targetEntity=Product.class)
private Map<Product, Integer> map = new HashMap<Product, Integer>();
0 голосов
/ 06 февраля 2009

Мне кажется, это немного странно, но если я правильно понимаю, вам понадобится схема базы данных, которая имеет:

  • таблица отгрузки с идентификатором
  • таблица продуктов с внешним ключом, ссылающимся на этот идентификатор

Это все виды базовых, так как отношение является базовым отношением один-ко-многим со стороны отгрузки и, конечно, со многими к одному. Я мог бы привести вам примеры, но на самом деле hibernate docs (прокрутите вниз до низа для примера карты), кажется, это охватывает. Некоторые по-настоящему усердно думают о том, как эти xml-карты соответствуют аннотациям. Если вы пытаетесь сделать это в чистом JPA, у вас могут возникнуть проблемы, так как в приведенном примере используется формула.

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