Erreur : No qualifying bean found for dependency
bonjour,
Je développe une application web avec spring mvc 4. pour la partie Dao, j'ai ajouté une classe générique GenericDAO :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| public class GenericDAO<T> {
@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);
}
}
} |
Dans mes services, si je fais la déclaration :
Code:
1 2 3
| @Autowired
@Qualifier(value="partenaireDao")
private GenericDAO<VscPartenaire> partenaireDao; |
J'obtient l'erreur suivante :
Citation:
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)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1463)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1094)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)
par contre si je développe une classe dao qui hérite de GenericDao :
Code:
1 2 3 4 5 6 7
| @Repository("partenaireDao")
public class PartenaireDao extends GenericDAO<VscPartenaire> {
public PartenaireDao() {
super(VscPartenaire.class);
}
} |
l'erreur ne se reproduit pas.
Avez vous une idée de ce qui ne marche pas avec mon GenericDao ?
Merci.