Разница между сетом и коллекцией в спящем режиме - PullRequest
1 голос
/ 02 февраля 2009

В чем разница между использованием набора или коллекции для свойств @OneToMany или @ManyToMany в моих объектах спящего объекта?

Hibernate отображает вещи по-разному в зависимости от того, какой вы выбираете?

Ответы [ 5 ]

3 голосов
/ 02 февраля 2009

В контексте спящего режима ниже приведен сценарий, при котором вы бы использовали Set вместо Collection: -

"Из ордера в качестве оставленных ордеров извлекается объединение orders.orderLineItems as orderLineItems ORDER BY orders.id DESC "

Возвращает дубликаты, поэтому используйте хэш-набор для их удаления.

Query query = session.getNamedQuery ("OrdersAndLoadLineItems"); Set set = new LinkedHashSet (); set.addAll (query.list ());
возвратный набор;

Это взято из Hibernate FAQ по ссылке http://www.hibernate.org/117.241.html

2 голосов
/ 02 февраля 2009

Если вы посмотрите на API Set extends Collection. Согласно описанию Set не допускает нулевые значения.

0 голосов
/ 22 июля 2010

Я не знаю разницы, но если вы используете Set, вы можете получить несколько пакетов в JPA, но если вы используете, например, List, вы не можете получить несколько пакетов в запросе.

0 голосов
/ 02 февраля 2009

Коллекция - это нечто более общее, чем Набор. Набор - это более конкретный подинтерфейс Коллекции. Смотрите здесь .

0 голосов
/ 02 февраля 2009

Коллекция - это интерфейс, создание экземпляра которого невозможно. Набор также является интерфейсом.

Таким образом, не имеет значения, что вы используете, если экземпляр объекта, который вы используете, совместим с ними.

Так что обычно вы делаете что-то вроде этого:

private Set parts = new HashSet();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...