2017-03-20 75 views
0

我developp与Spring MVC的4 Web应用程序的DAO层预选赛豆,我添加了一个类GenericDAO:`公共类GenericDAO {错误:未找到相关性

@PersistenceContext 
private EntityManager entityManager; 

private Class<T> parametrizedType; 

public GenericDAO(Class<T> parametrizedType) { 
    this.parametrizedType = parametrizedType; 
} 

public EntityManager getEntityManager() { 
    return entityManager; 
} 

public List<T> executeQuery(String query){ 
    TypedQuery<T> typedQuery = entityManager.createQuery(query, parametrizedType); 
    List<T> result = typedQuery.getResultList(); 
    return result; 
} 

public List<T> listAll(){ 
    List<T> result = getEntityManager().createQuery("Select t From " + parametrizedType.getSimpleName() + " t", parametrizedType).getResultList(); 
    return result; 
} 

public T getById(Object id){ 
    return getEntityManager().find(parametrizedType, id); 
} 

@SuppressWarnings("unchecked") 
public List<T> executeNativeQuery(String query){ 
    List<T> result = entityManager.createNativeQuery(query, parametrizedType).getResultList(); 
    return result; 
} 

public List<T> executeNamedQuery(String query){ 
    List<T> result = entityManager.createNamedQuery(query, parametrizedType).getResultList(); 
    return result; 
} 

@Transactional 
public void save(T entity){ 
    entityManager.persist(entity); 
} 

@Transactional 
public void modify(T entity){ 
    entityManager.merge(entity); 
} 

@Transactional 
public T find(Object id){ 
    if(id!=null){ 
     return entityManager.find(this.parametrizedType, id); 
    } 
    return null; 
} 

@Transactional 
public void delete(Object id){ 
    T t = find(id); 
    if(t!=null){ 
     entityManager.remove(t); 
    } 
} 

}`

声明吾道像下面产生错误durring开始我的应用程序:

@Autowired 
@Qualifier(value="partenaireDao") 
private GenericDAO<VscPartenaire> partenaireDao; 

错误是:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean found for dependency ....: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=partenaireDao)} 

在org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1463) 在org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1094) 在有机.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056) 在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)

,但它那OK with:

@Repository("partenaireDao") 

公共类PartenaireDao扩展GenericDAO {

public PartenaireDao() { 
    super(VscPartenaire.class); 
} 

}

你能告诉我它的错误与我的第一个声明? 我不想为每个实体创建dao。

感谢

回答

0

你能告诉我它的错误与我的第一个声明?

注释genericDao类,使类不是春实例化。

我不想为每个实体创建dao。

然后加@Repository("partenaireDao")GenericDao类。

+0

感谢您的回复,即使我将@Repository添加到GenericDAO,我也有同样的错误 – user19096

+0

你能用最新的代码更新你的问题吗? –

+0

@Repository 公共类GenericDAO { \t \t @ PersistenceContext \t私人的EntityManager EntityManager的; \t ..... – user19096