Problème nom de méthode et utilisation DAO
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:
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:
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:
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:
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.