2012-02-07 45 views
0

如何使用createNativeQuery使用的JpaTemplate,因爲jpatemplate.getEntityManager()將返回NULL:如何createNativeQuery使用的JpaTemplate

public class GenericDAO<T, PK extends Serializable> { 
    @Autowired 
    public void setEntityManagerFactory(EntityManagerFactory emf) { 
     this.jpaTemplate = new JpaTemplate(emf);  
    } 
} 

,或者我們可以同時使用的EntityManager和使用JpaTemplate?像:

public class GenericDAO<T, PK extends Serializable> { 
    @Autowired 
    public void setEntityManagerFactory(EntityManagerFactory emf) { 
     this.jpaTemplate = new JpaTemplate(emf);  
} 
    @PersistenceContext 
    public void setEntityManager(EntityManager entityManager) { 
     this.entityManager = entityManager; 
    } 

    public void save(obj){ 
     this.jpaTemplate.presist(Object obj) 
    } 

    public List<?> createNativeQuery(String query){ 
     entityManager.createNativeQuery(query) ; 
    } 
    } 

回答

2

要訪問的實體管理器,你應該使用的JpaTemplate的execute方法,並把你的代碼中的回調。 JpaTemplate爲您提供EM。您無法從JpaTemplate中獲取它:

return jpaTemplate.execute(new JpaCalback<List<?>>() { 
    @Override 
    public List<?> doInJpa(EntityManager em) { 
     // your code here. 
    } 
}); 

請注意,此類已被棄用。

+0

jpaTemplate是否有新的替代API? – Arun 2012-02-07 12:36:04

+1

直接使用原生JPA API(EntityManager方法)。 – 2012-02-07 12:50:27

相關問題