我正在使用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”),它就不会被称为容器的实体(我得到一个“未被识别的实体”......“已知的实体类型:[]”错误)。但是,如果我将my.domain.MyEntity标记添加到TestEJB的persistence.xml中,它可以正常工作。
问题:为什么TestEJB项目无法识别TestJPA项目中的注释类?
注意:Eclipse 3.4中没有“部署程序集”选项卡,但是有一个“Java EE模块依赖项”选项卡(TestEAR>属性> Java EE模块依赖项);我检查了所有项目都在列表中并进行了检查(即TestEJB,TestJPA,TestWeb)。
非常感谢任何帮助!这个让我真的很难过。
谢谢, 罗布
答案 0 :(得分:0)
这里似乎有几个问题......
对于不使用TestJPA bean的TestEJB项目,请确保它们在TestEAR的application.xml文件中列为<ejb>
模块而不是<jar>
模块。还要确保它们都是EAR的一部分。
对于No Known Entity类型,如果该错误出现在RSA中,您可能需要右键单击该项目并查找“JPA Tools”并选择“配置JPA实体”,如果您没有看到“JPA Tools”确保为该项目启用JPA方面。如果它出现在服务器上(我假设是WAS),请确保persistence.xml <exclude-unlisted-classes>true</exclude-unlisted-classes>
中没有以下行,或者需要在其中列出所有类,不一定是坏事。
除非绝对关键,否则为了简单起见,我会将您的EJB和实体存储在同一个项目中。