2012-02-24 114 views
0

我正在使用IBM RAD 7(aka Eclipse 3.4)和WebSphere 7.我有一個帶有基本EJB設置的工作空間;項目TestEAR,TestEJB,TestJPA,TestWeb。爲什麼我的EAR項目不能在我的JPA項目中看到帶註釋的EJB和實體?

我可以在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> Properties> Java EE Module Dependencies);我查了一下,所有的項目都在列表中並被檢查(即TestEJB,TestJPA,TestWeb)。

任何幫助,非常感謝!這一個讓我真的難倒了。

感謝, 羅布

回答

0

似乎這裏有幾個問題...

對於不使用TestJPA豆你TestEJB項目確保兩者都列爲<ejb>模塊和應用程序不<jar>模塊TestEAR中的.xml文件。還要確保它們都是EAR的一部分。

對於未知實體類型(如果該錯誤出現在RSA中),您可能希望右鍵單擊該項目並查找「JPA Tools」並選擇「配置JPA實體」,如果您沒有看到「JPA Tools」確保爲該項目啓用JPA構面。如果它發生在服務器上(我假設)確保以下行不在你的persistence.xml <exclude-unlisted-classes>true</exclude-unlisted-classes>或所有類都需要在其中列出,不一定是壞事。

除非絕對重要,否則爲了簡單起見,我會將EJB和實體存儲在同一個項目中。

+0

我會嘗試你所說的一切,但很快就會問,如何將EJB和JPA實體放在同一個項目中?我嘗試過,似乎沒有辦法在EJB項目上啓用JPA方面;我錯了嗎? – 2012-02-24 19:48:14

+0

如果右鍵單擊EJB項目並轉到屬性,您將看到「Project Facets」,您應該看到JPA確保它被選中。 – 2012-02-24 20:07:19

相關問題