Задать вопрос

Как замапить очередь пользователей с помощью Hibernate?

У меня есть следующая таблица Queue, хранящая очередь пользователей:

CREATE TABLE Queue (
  user_id INT NOT NULL,
  position INT NOT NULL UNIQUE,
  PRIMARY KEY (user_id)
);

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

Я думал создать вспомогательный класс Queue, но это выглядит как порядочный такой костыль, к тому же я не понял, где в этом классе мне ставить аннотацию @Id, и нужно ли мне создавать соответствующую таблицу в бд. Так себе идея, в общем.
С другой стороны, можно завести поле position внутри класса User, что значительно все упростило бы, но кмк это достаточно нелогично.

Вопрос: как правильно поступить в этой ситуации?
  • Вопрос задан
  • 34 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@sergiodev
В Hibernate не поддерживается маппинг через Queue, но можно использовать упорядоченный List:

https://docs.jboss.org/hibernate/orm/6.2/userguide...

или самостоятельно реализовать нужный тип коллекции:

https://docs.jboss.org/hibernate/orm/6.2/userguide...

А также можно отказаться от явного маппинга через @OneToMany и просто доставать коллекцию через HQL-запрос и класть результат в Queue.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы