Bonjour.
Je me permets de vous poser une question car je rencontre un problème.
J'ai une classe Utilisateur qui a été générée avec Hibernate Tools via Eclipse :
J'ai aussi une DAO associée qui permet de faire des requêtes en base : exemple :
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 @Entity @Table(name = "CONT_UTILISATEUR") public class Utilisateur implements java.io.Serializable { ... private Set<ProfilContrat> profilContrats = new HashSet<ProfilContrat>(0); @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "utilisateur") public Set<ProfilContrat> getProfilContrats() { return this.profilContrats; } public void setProfilContrats(Set<ProfilContrat> profilContrats) { this.profilContrats = profilContrats; } ...
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 public class UtilisateurDao extends GenericDao<Utilisateur, Long> implements GenericDaoInterface<Utilisateur, Long> {... public Utilisateur findByCode(String user) { Utilisateur utilisateur = null; Criteria query = getHibernateSession().createCriteria(clazz); query.add(Restrictions.eq( "utiCode", user)); @SuppressWarnings("unchecked") List<Utilisateur> listeUtilisateur = query.list(); if(listeUtilisateur.isEmpty() == false) { utilisateur=listeUtilisateur.get(0); } return utilisateur; } ... }
Je souhaite rajouter une méthode dont j'ai besoin dans mon application qui fonctionne sur un utilisateur.
Mon idée est donc de la mettre dans la classe utilisateur.
--> Dois je bien la mettre dans utilisateur pour faire utilisateur.mamethode() et non dans utilisateur DAO pour faire un appel utilisateurDAO.getInstance().mamethode(utilisateur)?
Deuxièmement,
En la mettant dans utilisateur, j'ai remarqué que si je la nomme comme cela :
--> Je n'ai pas de plantage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public ArrayList<GroupeContrat> listProfilContratsEnEcriture() { ArrayList<GroupeContrat> groupeContratsEnEcriture = new ArrayList<GroupeContrat>(); for(ProfilContrat profilContratutilisateur : getProfilContrats()) { if(profilContratutilisateur.isEcriture()) { groupeContratsEnEcriture.add(profilContratutilisateur.getGroupeContrat()); } } return groupeContratsEnEcriture; }
mais si je la nomme getProfilContratsEnEcriture() avec le même contenu, j'ai le plantage suivant :
--> Est ce normal?
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 ava.lang.RuntimeException: Problème de configuration : Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister cont.dao.HibernateUtil.<clinit>(HibernateUtil.java:31) cont.util.SessionHibernateFilter.doFilter(SessionHibernateFilter.java:34) cause mère org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:185) org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:135) org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:400) org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857) cont.dao.HibernateUtil.<clinit>(HibernateUtil.java:27) cont.util.SessionHibernateFilter.doFilter(SessionHibernateFilter.java:34) cause mère org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer] org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:138) org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:188) org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:403) org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:520) org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:148) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) java.lang.reflect.Constructor.newInstance(Constructor.java:513) org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:163) org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:135) org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:400) org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857) cont.dao.HibernateUtil.<clinit>(HibernateUtil.java:27) cont.util.SessionHibernateFilter.doFilter(SessionHibernateFilter.java:34) cause mère java.lang.reflect.InvocationTargetException sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) java.lang.reflect.Constructor.newInstance(Constructor.java:513) org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:135) org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:188) org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:403) org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:520) org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:148) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) java.lang.reflect.Constructor.newInstance(Constructor.java:513) org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:163) org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:135) org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:400) org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857) cont.dao.HibernateUtil.<clinit>(HibernateUtil.java:27) cont.util.SessionHibernateFilter.doFilter(SessionHibernateFilter.java:34) cause mère org.hibernate.PropertyNotFoundException: Could not find a setter for property profilContratsEnEcriture in class cont.hibernate.Utilisateur org.hibernate.property.BasicPropertyAccessor.createSetter(BasicPropertyAccessor.java:246) org.hibernate.property.BasicPropertyAccessor.getSetter(BasicPropertyAccessor.java:240) org.hibernate.mapping.Property.getSetter(Property.java:328) org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertySetter(PojoEntityTuplizer.java:416) org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:201) org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:80) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) java.lang.reflect.Constructor.newInstance(Constructor.java:513) org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:135) org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:188) org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:403) org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:520) org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:148) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) java.lang.reflect.Constructor.newInstance(Constructor.java:513) org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:163) org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:135) org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:400) org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1857) cont.dao.HibernateUtil.<clinit>(HibernateUtil.java:27) cont.util.SessionHibernateFilter.doFilter(SessionHibernateFilter.java:34)
--> Cela est donc peut etre en lien avec la première question... peut etre n'ai-je pas le droit d'écrire dans "Utilisateur"?
Merci d'avance.
Partager