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 :
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;
	}
...
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
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 :
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;
	}
--> Je n'ai pas de plantage

mais si je la nomme getProfilContratsEnEcriture() avec le même contenu, j'ai le plantage 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
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)
--> Est ce normal?
--> 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.