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
Voici son implémentation :
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); }
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)
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 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); }
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
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(); } }
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 :
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.
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
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.
Partager