Bonjour à tous
J'ai décidé de migrer vers JPA pour avoir accès aux fonctionnalités @PreUpdated @PreCreated
Je mets les paramètres mais je me retrouve avec une erreur
Je vous affiche les parametres :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sfdDao': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
persistence.xml
applicationContext-dao.xml
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 <?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="generic-dao" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.archive.autodetection" value="class" /> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.format_sql" value="true" /> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> <property name="hibernate.hbm2ddl.auto" value="none" /> <property name="hibernate.connection.driver_class" value="${jdbc.driverClassName}"/> <property name="hibernate.connection.url" value="${jdbc.url}"/> <property name="hibernate.connection.username" value="${jdbc.username}"/> <property name="hibernate.connection.password" value="${jdbc.password}"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="false"/> <property name="hibernate.query.substitutions" value="true 1, false 0"/> </properties> </persistence-unit> </persistence>
applicationContext-ressources.xml
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 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd" default-lazy-init="true"> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="persistenceUnitName" value="generic-dao" /> <property name="persistenceXmlLocation" value="classpath:persistence.xml" /> <property name="dataSource" ref="dataSource" /> <property name="loadTimeWeaver"> <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" /> </property> <property name="jpaVendorAdapter" ref="vendorAdapter" /> </bean> <bean id="vendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="databasePlatform" value="${hibernate.dialect}" /> <property name="showSql" value="true" /> <property name="generateDdl" value="false" /> </bean> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </bean> <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> <tx:annotation-driven /> <bean id="searchProcessor" class="com.googlecode.genericdao.search.jpa.JPASearchProcessor"> <constructor-arg ref="metadataUtil" /> </bean> <bean id="metadataUtil" class="com.googlecode.genericdao.search.jpa.hibernate.HibernateMetadataUtil" factory-method="getInstanceForEntityManagerFactory"> <constructor-arg ref="entityManagerFactory" /> </bean> <!-- Activates scanning of @Autowired --> <context:annotation-config/> <!-- Activates scanning of @Repository --> <context:component-scan base-package="com.dao.sem"/> <context:component-scan base-package="com.service.sem" /> </beans>
applicationContext.xml
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 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd"> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>classpath:jdbc.properties</value> </property> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> </beans>
SfdDao.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd" default-lazy-init="true"> <!-- Activates scanning of @Autowired --> <context:annotation-config /> <!-- Activates scanning of @Repository and @Service --> <context:component-scan base-package="com.web.sem" /> </beans>
GenericDao.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 @Transactional @Repository("sfdDao") public class SfdDao extends GenericDao<Sfd, Serializable> implements ISfdDao{ }
Il faut savoir que GenericDAOImpl proviens de la bibliotheque genericDAO https://code.google.com/p/generic-dao/
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 @Repository @Transactional public class GenericDao<T, ID extends Serializable> extends GenericDAOImpl<T, ID>{ protected static final Logger log = LoggerFactory.getLogger(GenericDao.class); @PersistenceContext public void setEntityManager(EntityManager entityManager) { super.setEntityManager(entityManager); } @Autowired public void setSearchProcessor(JPASearchProcessor searchProcessor) { super.setSearchProcessor(searchProcessor); } }
je mets quand mm son code
Je vous remercie d'avance pour toute aide que vous pourriez m'apporter car je galere vraiment depuis une semaine dessus.
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 public class GenericDAOImpl<T, ID extends Serializable> extends JPABaseDAO implements GenericDAO<T, ID> { protected Class<T> persistentClass = (Class<T>) DAOUtil.getTypeArguments(GenericDAOImpl.class, this.getClass()).get(0); public int count(ISearch search) { if (search == null) search = new Search(); return _count(persistentClass, search); } public T find(ID id) { return _find(persistentClass, id); } public T[] find(ID... ids) { return _find(persistentClass, ids); } public List<T> findAll() { return _all(persistentClass); } public void flush() { _flush(); } public T getReference(ID id) { return _getReference(persistentClass, id); } public T[] getReferences(ID... ids) { return _getReferences(persistentClass, ids); } public boolean isAttached(T entity) { return _contains(entity); } public void refresh(T... entities) { _refresh(entities); } public boolean remove(T entity) { return _removeEntity(entity); } public void remove(T... entities) { _removeEntities((Object[]) entities); } public boolean removeById(ID id) { return _removeById(persistentClass, id); } public void removeByIds(ID... ids) { _removeByIds(persistentClass, ids); } public T merge(T entity) { return _merge(entity); } public T[] merge(T... entities) { return _merge(persistentClass, entities); } public void persist(T... entities) { _persist(entities); } public T save(T entity) { return _persistOrMerge(entity); } public T[] save(T... entities) { return _persistOrMerge(persistentClass, entities); } public <RT> List<RT> search(ISearch search) { if (search == null) return (List<RT>) findAll(); return _search(persistentClass, search); } public <RT> SearchResult<RT> searchAndCount(ISearch search) { if (search == null) { SearchResult<RT> result = new SearchResult<RT>(); result.setResult((List<RT>) findAll()); result.setTotalCount(result.getResult().size()); return result; } return _searchAndCount(persistentClass, search); } public <RT> RT searchUnique(ISearch search) { return (RT) _searchUnique(persistentClass, search); } public Filter getFilterFromExample(T example) { return _getFilterFromExample(example); } public Filter getFilterFromExample(T example, ExampleOptions options) { return _getFilterFromExample(example, options); } }
Partager