Bonjour,

Je viens vers vous car j'ai un problème. J'essaye de me faire un projet de départ incluant spring + maven + hibernate à partir de ce tuto : http://palo-it.com/blog/creation-dun...rud-avec-jsf2/
Mon but et d'intégrer à cela une DAO generic mais quand je fais cela ma fonction de ma DAO generic ne fonctionne plus.

Voici mon interface de ma DAO generic
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
package com.cad.dao;
 
public interface GenericDao<T, K> {
 
		void save(T entite);
 
 
}
Voici son implémentation :
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
package com.cad.dao.impl;
 
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
 
import com.cad.dao.GenericDao;
 
public class GenericDaoImpl<T, K> implements GenericDao<T, K> {
 
	    private SessionFactory sessionFactory;
 
	    @Autowired
	    public void setSessionFactory(SessionFactory factory){
	        sessionFactory=factory;
	    }
 
 
 
	@Override
	public void save(T entite) {
		// TODO Auto-generated method stub
		sessionFactory.getCurrentSession().merge(entite);
           }
 
 
}

Voici ma DAO de mon User (j'ai renommé Person par User)
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
 
package com.cad.dao;
import java.util.List;
 
import com.cad.entities.User;
 
 
public interface UserDao extends GenericDao<User, Long>{
    public void saveUser(User user);
 
    public List getAllUsers();
 
    public User getUserById(Long id);
 
    public void deleteUser(User user);
 
    public List getUserbyName(String name);
 
}
et voici son implémentation :
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
package com.cad.dao.impl;
 
import java.util.List;
 
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
 
import com.cad.dao.UserDao;
import com.cad.entities.User;
 
 
@Repository("userDao")
//public class UserDaoImpl  implements UserDao{ 
public class UserDaoImpl extends GenericDaoImpl<User, Long> implements UserDao{  
 
	private SessionFactory sessionFactory;
 
    @Autowired
    public void setSessionFactory(SessionFactory factory){
        sessionFactory=factory;
    }
 
    public void saveUser(User user) {
        sessionFactory.getCurrentSession().merge(user);
    }
 
    @SuppressWarnings("unchecked")
    public List getAllUsers() {
        return sessionFactory.getCurrentSession().createCriteria(User.class).list();
    }
 
    public User getUserById(Long id) {
        return (User) sessionFactory.getCurrentSession().get(User.class, id);
    }
 
    public void deleteUser(User user) {
        sessionFactory.getCurrentSession().delete(user);
    }
 
    public List getUserbyName(String name) {
        return sessionFactory.getCurrentSession().createQuery("From User WHERE name =:name").list();
    }
 
 
}
A la place d'utiliser ma méthode saveUser de la classe UserDaoImpl j'utilise ma méthode save de ma GenericDaoImpl dans le UserManagerImpl de cette manière là.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
@Transactional(readOnly = false)
	public void saveUser(User user) {
		//userDao.saveUser(user);
		userDao.save(user);
 
	}


Or quand je fait sa j'ai le message d'erreur suivant :

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
WARNING: #{userBean.saveUser}: java.lang.NullPointerException
javax.faces.FacesException: #{userBean.saveUser}: java.lang.NullPointerException
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:117)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:126)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
	at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:118)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:101)
	... 33 more
Caused by: java.lang.NullPointerException
	at com.cad.dao.impl.GenericDaoImpl.save(GenericDaoImpl.java:33)
	at com.cad.manager.impl.UserManagerImpl.saveUser(UserManagerImpl.java:27)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
	at com.sun.proxy.$Proxy15.saveUser(Unknown Source)
	at com.cad.bean.UserBean.saveUser(UserBean.java:39)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:264)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	... 34 more
Je ne comprend pas pourquoi j'ai un null pointer exception dans ce cas la, j'ai des doutes sur ma classe GenericDaoImpl et la déclaration de la sessionFactory, mais je ne trouve pas l'erreur.

Auriez-vous une idée pour m'aider s'il vous plait.
(Si vous avez besoin d'autres morceaux de codes je vous les fournirez)
Merci par avance de vos réponses.