0

我正在使用 IBM RAD 7(又名 Eclipse 3.4)和 WebSphere 7。

我有一个带有基本 EJB 设置的工作区;项目 TestEAR、TestEJB、TestJPA、TestWeb。

我可以在 TestEJB 项目中注释一个 ejb(“@Stateless EntityService”)并且它工作正常。但是,如果我在 TestJPA 项目中放置一个 ejb(“@Stateless EntityDAO”),它不会被注入到 EntityService 中。如果我将 EntityDAO 移动到 TestEJB 项目,它工作正常。

此外,如果我将一个类注释为一个实体(“@Entity MyEntity”),则它不被称为容器的实体(我得到一个“无法识别的实体”......“已知实体类型:[]”错误)。但是,如果我向 TestEJB 的 persistence.xml 添加一个 my.domain.MyEntity 标记,它就可以正常工作。

问题:为什么TestEJB 项目不能识别TestJPA 项目中的注释类?

注意:Eclipse 3.4 中没有“Deployment Assembly”选项卡,但有一个“Java EE Module Dependencies”选项卡(TestEAR > Properties > Java EE Module Dependencies);我检查了所有项目都在列表中并检查了(即TestEJB、TestJPA、TestWeb)。

任何帮助是极大的赞赏!这个真的让我难过。

谢谢,罗伯

4

1 回答 1

0

看来这里有几个问题...

对于不使用 TestJPA bean 的 TestEJB 项目,请确保在 TestEAR 中的 application.xml 文件中将两者都列为<ejb>模块而不是模块。<jar>还要确保它们都是 EAR 的一部分。

对于 No Known Entity 类型,如果该错误出现在 RSA 中,您可能需要右键单击项目并查找“JPA 工具”并选择“配置 JPA 实体”,如果您没有看到“JPA 工具”,请确保 JPA 方面是为该项目启用。如果它发生在服务器上(我假设是这样),请确保以下行不在您的 persistence.xml 中<exclude-unlisted-classes>true</exclude-unlisted-classes>,否则所有类都需要在其中列出,这不一定是坏事。

除非绝对重要,否则为简单起见,我会将您的 EJB 和实体存储在同一个项目中。

于 2012-02-24T19:28:09.803 回答