Hibernate: как сохранить порядок вставки - PullRequest
4 голосов
/ 11 июня 2010

У меня есть список объектов, для которых важен порядок создания, но они не содержат метки времени, которые можно использовать для сортировки.Объекты добавляются в конец списка по мере их создания, поэтому они будут правильно упорядочены в самом списке.

После сохранения списка с помощью Hibernate сущности появляются в таблице базы данных в том порядке, в котором они были созданы.Однако при получении списка с использованием нового сеанса Hibernate список теперь находится в обратном порядке вставки / создания.

Это ожидаемое поведение?Есть ли способ получить список в том же порядке, в котором он указан в таблице?

Первичный ключ - это UUID, и список сущностей всегда должен создаваться на одном IP-адресе и JVM.Это означает, что сортировка по UUID возможна, но я бы предпочел не делать предположений.

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

Ответы [ 2 ]

3 голосов
/ 11 июня 2010

JPA (который реализует hibernate) имеет @OrderBy:

@OneToMany
@OrderBy("uuidColumn")
private List<Something> list;
3 голосов
/ 11 июня 2010

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

Типы, такие как сумки и наборы, будут выполнены, но потеряют порядок элементов.

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