Я использую стандарт JPA 2.0 и спящий режим в качестве поставщика сохраняемости.При работе с ElementCollections мне любопытно узнать, почему org.hibernate.collection.PersistentSet не может быть обновлен?
Метод isRowUpdatePossible () в PersistentSet возвращает false.По сравнению с PersistentList, которые являются обновляемыми, Set выполняет несколько удалений и вставок, а не просто обновление.
Например, рассмотрим мою сущность, имеющую Набор, который в настоящее время имеет значения {1, 2, 3}.Я обновляю набор, очищая его, а затем добавляя {4, 5, 6}.При вызове entityManager.merge (entity) 3 выполняются запросы на удаление и вставку.
Если в приведенном выше примере я использую список, то только один запрос на обновление запускается со значениями связывания.
Количество запросов приводит меня к выводу об использовании списка, когда моей базе данных удастся избежать дублирования в столбце.
Подводя итоги вопросов
- Почему org.hibernate.collection.PersistentSet не обновляется?Метод isRowUpdatePossible () в PersistentSet возвращает false.
- Является ли List лучше, чем Set, если база данных может позаботиться о дубликатах?
Мы будем признательны за эти вопросы.