如何使用JPA映射有状态的ejb 3.1会话bean

时间:2011-06-05 10:48:06

标签: hibernate jpa annotations ejb-3.1

我怀疑如何使用带有hibernate的JPA注释来表示我的数据库。这是一个非常简单的代表在线图书馆的webapp。

我有一个有状态的会话bean,允许用户预订书籍。用户最多可以预订2本书。它包含以下字段:

  • 整数ID;
  • UserBean userBean;
  • 列出bookList;
  • 日期预约日期;
  • Date reservationExp;

表示此类的数据库是:

  • int id_book_reservation PK
  • int id_user FK
  • int id_book FK
  • date reservation_date
  • date expiration_date

这个有状态的bean可以作为购物车使用。因此,它允许用户将书籍放在那里,继续浏览,添加另一本书,然后最终要求预订(如电子商务网站上的“购买”操作)。

我无法弄清楚如何映射bookList字段。预订和书籍之间的关系是一对一的,但我想知道如何知道,例如,当一本书已经被保留,因为我有一个List而不仅仅是一个书籍对象(在HQL中)

提前致谢! 欢呼声。

1 个答案:

答案 0 :(得分:3)

我认为你正在混合使用EJB / JPA的两个概念。
statefull会话bean是由容器管理的实体。在这里你可以保持状态一段时间,直到statefull会话bean到期为止 您的数据库表应该在实体中表示。 entity是带注释(或xml配置)的POJO。在这些注释中,您可以指定表特征,主键和外键 因此,将映射表的字段移动到另一个类,然后可以使用statefull会话bean来保持状态。

祝你好运