bonjour,
Je développe une application web avec spring mvc 4. pour la partie Dao, j'ai ajouté une classe générique GenericDAO :
Dans mes services, si je fais la déclaration :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } } }
J'obtient l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 @Autowired @Qualifier(value="partenaireDao") private GenericDAO<VscPartenaire> partenaireDao;
par contre si je développe une classe dao qui hérite de GenericDao :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)
l'erreur ne se reproduit pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 @Repository("partenaireDao") public class PartenaireDao extends GenericDAO<VscPartenaire> { public PartenaireDao() { super(VscPartenaire.class); } }
Avez vous une idée de ce qui ne marche pas avec mon GenericDao ?
Merci.
Partager