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:
1
2
3
4
5
6
7
8
9 package com.cad.dao; public interface GenericDao<T, K> { void save(T entite); }
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 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:
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:
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:
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:
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.