Почему в Hibernate Set является рекомендуемым способом представления многозначных ассоциаций - PullRequest
0 голосов
/ 02 августа 2010

Взято отсюда: http://docs.jboss.org/hibernate/stable/core/reference/en/html/persistent-classes.html#persistent-classes-equalshashcode

Я склонен использовать List, поскольку Criteria возвращает List, так что это делает мой код чище, поскольку мне не нужно выполнять преобразование.

Я делаю что-то вроде этого ..

@OneToMany(cascade= {CascadeType.PERSIST, CascadeType.REMOVE}, mappedBy="parent")
@Column(name="PARENT_ID")
public List<Menu> getChildMenus() {
    return childMenus;
}

Если бы я использовал там Set, где-то в моем DAO мне сначала пришлось бы преобразовать результаты, возвращаемые Criteria, в Set.

Интересно, каковы могут быть последствия использования List так, как я делаю.

1 Ответ

5 голосов
/ 02 августа 2010

Set используется, поскольку дочерняя таблица имеет первичный ключ, так что дочерний элемент может быть только один раз в родительском.Если вы используете список, в списке могут быть повторяющиеся дочерние элементы, которые нельзя сохранить в базе данных.

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