我的项目中有无状态实体Bean(EJB 3.x)和EJB Bean(EJB 2.x)以及其他类。我想将实体Bean注入EJB Bean。所以,我能够使用JNDI方式注入它,即(BeanName#completename),但我想使用@EJB注入它,就像我们在没有任何JNDI查找的情况下将实体bean注入另一个实体bean中一样。这两个bean都是不同模块的一部分,但部署在同一台服务器上。我正在使用weblogic和eclipselink。
答案 0 :(得分:1)
实体bean永远不会在EJB bean中注入。您可以使用EntityManager在实体bean上执行数据库操作。要使用数据库操作,实体必须与EntityManager持久性上下文相关联。因此,在实体未处于持久状态之前,您无法使用它们。
所有事务范围的持久化上下文都是通过将@PersistentContext注入EntityManager对象来配置的,如下所示,
@PersistenceContext(name="PersistentUnitName")
private EntityManager entityManager;
答案 1 :(得分:0)
您使用的是EJB 3还是EJB 2? EclipseLink不支持EJB 2 EntityBean,仅支持EJB 3实体。
您无法注入Entity bean,它没有意义,必须通过EntityManager从数据库中查询它们。您可以使用@PersistenceContext注入EntityManager。
请参阅,
http://en.wikibooks.org/wiki/Java_Persistence/Runtime#Java_Enterprise_Edition