2016-04-29 43 views
-1

我使用karaf 4.0.5和休眠4.2.15而我想在我的BaseDao類中獲得EntityManager。 如果我想在我的服務如何在Karaf 4.0.5的BaseDao中獲得entityManager?

<bean id="subscriberService" class="domain.payment.impl.subscriber.SubscriberServiceImpl" scope="singleton" 
      init-method="init"> 
     <tx:transaction method="*" /> 
    </bean> 

@PersistenceContext(unitName="payment") 
    private EntityManager entityManager; 

得到EntityManager我得到的EntityManager normaly。

但是,如果我試圖在另一個類

public class BaseJpaDao<E> implements BaseDao<E>{ 
    protected Class<?> entityClass; 

    @PersistenceContext(unitName="payment") 
    private EntityManager entityManager; 

    public BaseJpaDao(Class<?> entityClass) { 
     this.entityClass = entityClass; 
    } 

    @Override 
    public E persist(E e) { 
     entityManager.persist(e); 
     return e; 
    } 

entityManager是NULL;

我試圖

<bean id="baseDao" class="domain.payment.impl.base.BaseJpaDao" scope="singleton" 
      init-method="init"> 
     <tx:transaction method="*" /> 
    </bean> 

但它不能幫助。

在Spring項目中工作正常,但在OSGi中我有很多問題。

真的只有從我可以得到的服務entityManager

回答

1

您是否檢查過日誌? BaseJpaDao似乎沒有一個公共的空構造函數,所以應該有一個錯誤karaf.log說,baseDao豆不能創建...

+0

不知道這是否是問題,但它是值得一試創建一個空的構造函數,看看它是否會工作。 –

相關問題