Как отобразить сессионный компонент ejb 3.1 с сохранением состояния с использованием JPA - PullRequest
0 голосов
/ 05 июня 2011

У меня есть сомнения относительно того, как представить мою базу данных с помощью аннотаций JPA с помощью hibernate. Это очень простое веб-приложение, представляющее онлайн-библиотеку.

У меня есть сессионный компонент с состоянием, который позволяет пользователям бронировать книги. Пользователи могут забронировать до 2 книг. Имеет следующие поля:

  • Целочисленный идентификатор;
  • UserBean userBean;
  • Список bookList;
  • Дата бронированияДата;
  • Дата бронированияExp;

База данных, представляющая этот класс:

  • int id_book_reservation PK
  • int id_user FK
  • int id_book FK
  • дата booking_date
  • дата окончания срока действия

Этот боб с состоянием может работать как корзина покупок. Таким образом, пользователь может поместить туда книги, продолжить просмотр, добавить другую книгу и, наконец, запросить бронирование (например, действие «купить» на веб-сайте электронной коммерции).

Я не могу понять, как отобразить поле bookList. Отношение между резервированием и книгами одно-много, но мне было интересно, как тогда можно было бы узнать, например, когда книга уже зарезервирована, поскольку у меня есть список, а не просто объект книги (в HQL) .

Заранее спасибо! Приветствия.

1 Ответ

3 голосов
/ 06 июня 2011

Я думаю, что вы смешиваете две концепции EJB / JPA.
Сессионный компонент Statefull - это объект, управляемый контейнером. Здесь вы можете сохранять состояние в течение определенного времени, пока не истечет срок действия сессионного компонента.
Таблицы вашей базы данных должны быть представлены в сущностях. сущность - это POJO с аннотациями (или xml config). В этих аннотациях вы указываете характеристики таблицы, первичные и внешние ключи.
Поэтому переместите поля, отображающие вашу таблицу, в другой класс, и тогда вы сможете использовать свой сессионный компонент statefull для сохранения своего состояния.

Удачи

...