如何使用jpatemplate使用createNativeQuery,因为jpatemplate.getEntityManager()返回null:
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) ;
}
}
答案 0 :(得分:2)
要访问实体管理器,您应该使用JpaTemplate的execute方法,并将代码放入回调中。 JpaTemplate为您提供EM。你没有从JpaTemplate获得它:
return jpaTemplate.execute(new JpaCalback<List<?>>() {
@Override
public List<?> doInJpa(EntityManager em) {
// your code here.
}
});
请注意,此类已弃用。