2013-06-03 85 views
0

我的項目中有無狀態實體Bean(EJB 3.x)和EJB Bean(EJB 2.x)以及其他類。我想將實體Bean注入EJB Bean。所以,我可以使用JNDI方式(即BeanName#completename)注入它,但我想使用@EJB注入它,就像我們在沒有任何JNDI查找的情況下將實體bean注入另一個實體bean中一樣。這兩個bean都是不同模塊的一部分,但部署在同一臺服務器上。我正在使用eclipselink的weblogic。使用@EJB將實體Bean注入EJB Bean

回答

0

您使用的是EJB 3還是EJB 2? EclipseLink不支持EJB 2 EntityBean,僅支持EJB 3實體。

你不能注入實體bean,它沒有意義,它們必須通過EntityManager從數據庫中查詢。你可以使用@PersistenceContext注入一個EntityManager。

見,

http://en.wikibooks.org/wiki/Java_Persistence/Runtime#Java_Enterprise_Edition

+0

我的項目包括EJB 3和EJB 2.簡單,我試圖注入EJB 3 EJB 2中的引用。Eclipse鏈接僅用於EJB 3。 –

1

實體bean從來沒有注入在EJB豆。您可以使用EntityManager在實體bean上執行數據庫操作。使用數據庫操作實體必須與EntityManager持久性上下文相關聯。所以你不能使用你的實體,直到它不處於持久狀態。

所有事務範圍的持久化上下文被注入到@PersistentContext EntityManager的對象,這樣的配置,

@PersistenceContext(name="PersistentUnitName") 
private EntityManager entityManager;