IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Problème de Mapping Hibernate


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut Problème de Mapping Hibernate
    Bonjour,

    je m'excuse si je m'infiltre dans cette discussion mais parce que je cherche une solution depuis 3 jours et je vous serais très reconnaissant d'accépter de m'aider.
    ....
    j'ai un problème avec un mapping particulier,
    voila j'ai une classe mère et une classe fille,
    la classe fille à une association many to many avec une autre ce qui mène à une table d'association, bon j'ai fait le nécessaire pour le mapping de l'héritage et ça fonctionne, mais lorsque je veux récupérer un objet de la classe fille afin de l'ajouter à la table d'association un enregistrement (dossierIncomplet-motifRejet) :
    Session session = HibernateUtil.currentSession();
    Transaction tx = session.beginTransaction();

    DossierIncomplet dosInc = (DossierIncomplet)session.load(DossierIncomplet.class, idDosIncomplet);
    MotifRejet raisonRej = (MotifRejet)session.load(MotifRejet.class,idMotif);
    dosInc.getMotifRejet().add(raisonRej);
    tx.commit();

    sachant que :
    la classe mère= Dossier
    La classe fille= DossierIncomplet
    MotifRejet est la classe avec association many to many avec la classe fille DossierIncomplet.


    Malheureusement j'ai le message Hibernate:

    org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of ma.rami.hibernate.model.DossierIncomplet.setNumeroDossier
    merci de m'aider

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 951
    Points : 4 376
    Points
    4 376
    Par défaut
    Citation Envoyé par nyrami Voir le message
    Bonjour,

    je m'excuse si je m'infiltre dans cette discussion mais parce que je cherche une solution depuis 3 jours et je vous serais très reconnaissant d'accépter de m'aider.
    ....
    j'ai un problème avec un mapping particulier,
    voila j'ai une classe mère et une classe fille,
    la classe fille à une association many to many avec une autre ce qui mène à une table d'association, bon j'ai fait le nécessaire pour le mapping de l'héritage et ça fonctionne, mais lorsque je veux récupérer un objet de la classe fille afin de l'ajouter à la table d'association un enregistrement (dossierIncomplet-motifRejet) :
    Session session = HibernateUtil.currentSession();
    Transaction tx = session.beginTransaction();

    DossierIncomplet dosInc = (DossierIncomplet)session.load(DossierIncomplet.class, idDosIncomplet);
    MotifRejet raisonRej = (MotifRejet)session.load(MotifRejet.class,idMotif);
    dosInc.getMotifRejet().add(raisonRej);
    tx.commit();

    sachant que :
    la classe mère= Dossier
    La classe fille= DossierIncomplet
    MotifRejet est la classe avec association many to many avec la classe fille DossierIncomplet.


    Malheureusement j'ai le message Hibernate:

    org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of ma.rami.hibernate.model.DossierIncomplet.setNumeroDossier
    merci de m'aider
    il y a un problème lié à la méthode "setNumeroDossier" dans le proxy que génère Hibernate via CGLIB…

    vérifier ce que vous y faites… comment est-elle déclarée… ?

    poster le code source de cette méthode pourrait aider…

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut Problème Hibernate suite :
    Citation Envoyé par JeitEmgie Voir le message
    il y a un problème lié à la méthode "setNumeroDossier" dans le proxy que génère Hibernate via CGLIB…

    vérifier ce que vous y faites… comment est-elle déclarée… ?

    poster le code source de cette méthode pourrait aider…
    Merci de votre réponse,... j'ai tant charcher mains en vain ,
    je vous donne les Classes suivante telle que je les ai déclarées:

    public class Dossier
    {
    protected java.lang.Long numeroDossier;
    protected java.lang.String libelleDossier;
    protected java.util.Date dateReception;

    protected Affilie affilie;
    protected TypeDossier typeDossier;
    protected Conseiller conseiller;

    public Dossier() {
    // TODO Auto-generated constructor stub
    }

    public java.lang.Long getNumeroDossier() {
    return numeroDossier;
    }

    protected void setNumeroDossier(java.lang.Long numeroDossier) {
    this.numeroDossier = numeroDossier;
    }

    public java.lang.String getLibelleDossier() {
    return libelleDossier;
    }

    public void setLibelleDossier(java.lang.String libelleDossier) {
    this.libelleDossier = libelleDossier;
    }

    public java.util.Date getDateReception() {
    return dateReception;
    }

    public void setDateReception(java.util.Date dateReception) {
    this.dateReception = dateReception;
    }

    public Affilie getAffilie() {
    return affilie;
    }

    public void setAffilie(Affilie affilie) {
    this.affilie = affilie;
    }

    public Conseiller getConseiller() {
    return conseiller;
    }

    public void setConseiller(Conseiller conseiller) {
    this.conseiller = conseiller;
    }


    public TypeDossier getTypeDossier() {
    return typeDossier;
    }

    public void setTypeDossier(TypeDossier typeDossier) {
    this.typeDossier = typeDossier;
    }


    }
    Ensuite

    public class DossierIncomplet extends Dossier
    {
    private Set<MotifRejet> motifRejet= new HashSet<MotifRejet>();


    public DossierIncomplet() {
    // TODO Auto-generated constructor stub
    }


    public Set<MotifRejet> getMotifRejet() {
    return motifRejet;
    }

    public void setMotifRejet(Set<MotifRejet> motifRejet) {
    this.motifRejet = motifRejet;
    }

    }

    en fin :
    public class MotifRejet
    {
    private java.lang.Long idMotif;
    private java.lang.String libelleRejet;

    public MotifRejet() {
    // TODO Auto-generated constructor stub
    }
    public java.lang.Long getIdMotif() {
    return idMotif;
    }
    private void setIdMotif(java.lang.Long idMotif) {
    this.idMotif = idMotif;
    }
    public java.lang.String getLibelleRejet() {
    return libelleRejet;
    }
    public void setLibelleRejet(java.lang.String libelleRejet) {
    this.libelleRejet = libelleRejet;
    }

    }

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 951
    Points : 4 376
    Points
    4 376
    Par défaut
    Citation Envoyé par nyrami Voir le message
    Merci de votre réponse,... j'ai tant charcher mains en vain ,
    je vous donne les Classes suivante telle que je les ai déclarées:

    public class Dossier
    {
    ...
    protected void setNumeroDossier(java.lang.Long numeroDossier) {
    this.numeroDossier = numeroDossier;
    }
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	public void setNumeroDossier(java.lang.Long numeroDossier) {

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut Problème Hibernate
    Citation Envoyé par JeitEmgie Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	public void setNumeroDossier(java.lang.Long numeroDossier) {

    j'ai rechangé la définition, mais le problème persiste encore....

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 951
    Points : 4 376
    Points
    4 376
    Par défaut
    Citation Envoyé par nyrami Voir le message
    j'ai rechangé la définition, mais le problème persiste encore....
    stack trace complet de l'exception ?

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut Problème Hibernate
    Citation Envoyé par JeitEmgie Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	public void setNumeroDossier(java.lang.Long numeroDossier) {

    je suis toujours bloqué et je n'arrive pas à résoudre mon problème,
    svp, je veux vraiment trouver une solution...

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut Problème Hibernate
    Citation Envoyé par nyrami Voir le message
    je suis toujours bloqué et je n'arrive pas à résoudre mon problème,
    svp, je veux vraiment trouver une solution...
    citation:

    09:52:46,953 INFO Environment:464 - Hibernate 3.0.5
    09:52:46,953 INFO Environment:477 - hibernate.properties not found
    09:52:46,969 INFO Environment:510 - using CGLIB reflection optimizer
    09:52:46,969 INFO Environment:540 - using JDK 1.4 java.sql.Timestamp handling
    09:52:47,015 INFO Configuration:1110 - configuring from resource: /hibernate.cfg.xml
    09:52:47,015 INFO Configuration:1081 - Configuration resource: /hibernate.cfg.xml
    09:52:47,203 INFO Configuration:444 - Mapping resource: ma/rami/hibernate/model/Affilie.hbm.xml
    09:52:47,265 INFO HbmBinder:260 - Mapping class: ma.rami.hibernate.model.Affilie -> DPI_DB.dbo.Affilie
    09:52:47,281 INFO Configuration:444 - Mapping resource: ma/rami/hibernate/model/Conseiller.hbm.xml
    09:52:47,297 INFO HbmBinder:260 - Mapping class: ma.rami.hibernate.model.Conseiller -> DPI_DB.dbo.Conseiller
    09:52:47,297 INFO Configuration:444 - Mapping resource: ma/rami/hibernate/model/Documents.hbm.xml
    09:52:47,312 INFO HbmBinder:260 - Mapping class: ma.rami.hibernate.model.Documents -> DPI_DB.dbo.Documents
    09:52:47,328 INFO Configuration:444 - Mapping resource: ma/rami/hibernate/model/ModeEnvoi.hbm.xml
    09:52:47,328 INFO HbmBinder:260 - Mapping class: ma.rami.hibernate.model.ModeEnvoi -> DPI_DB.dbo.ModeEnvoi
    09:52:47,343 INFO Configuration:444 - Mapping resource: ma/rami/hibernate/model/MotifRejet.hbm.xml
    09:52:47,343 INFO HbmBinder:260 - Mapping class: ma.rami.hibernate.model.MotifRejet -> DPI_DB.dbo.MotifRejet
    09:52:47,343 INFO Configuration:444 - Mapping resource: ma/rami/hibernate/model/TypeDossier.hbm.xml
    09:52:47,359 INFO HbmBinder:260 - Mapping class: ma.rami.hibernate.model.TypeDossier -> DPI_DB.dbo.TypeDossier
    09:52:47,359 INFO HbmBinder:1218 - Mapping collection: ma.rami.hibernate.model.TypeDossier.piecesConstitutives -> DPI_DB.dbo.PiecesDossiers
    09:52:47,359 INFO Configuration:444 - Mapping resource: ma/rami/hibernate/model/Dossier.hbm.xml
    09:52:47,375 INFO HbmBinder:260 - Mapping class: ma.rami.hibernate.model.Dossier -> DPI_DB.dbo.Dossier
    09:52:47,437 INFO HbmBinder:784 - Mapping joined-subclass: ma.rami.hibernate.model.DossierIncomplet -> DPI_DB.dbo.DossierIncomplet
    09:52:47,437 INFO HbmBinder:1218 - Mapping collection: ma.rami.hibernate.model.DossierIncomplet.motifRejet -> DPI_DB.dbo.DosRaisonRejet
    09:52:47,437 INFO Configuration:1222 - Configured SessionFactory: null
    09:52:47,437 INFO Configuration:875 - processing extends queue
    09:52:47,437 INFO Configuration:879 - processing collection mappings
    09:52:47,437 INFO Configuration:888 - processing association property references
    09:52:47,437 INFO Configuration:917 - processing foreign key constraints
    09:52:47,453 INFO DriverManagerConnectionProvider:41 - Using Hibernate built-in connection pool (not for production use!)
    09:52:47,453 INFO DriverManagerConnectionProvider:42 - Hibernate connection pool size: 1
    09:52:47,453 INFO DriverManagerConnectionProvider:45 - autocommit mode: false
    09:52:47,515 INFO DriverManagerConnectionProvider:80 - using driver: com.microsoft.sqlserver.jdbc.SQLServerDriver at URL: jdbc:sqlserver://serv-dvp:1433
    09:52:47,531 INFO DriverManagerConnectionProvider:86 - connection properties: {user=sa, password=****}
    09:52:47,593 INFO SettingsFactory:77 - RDBMS: Microsoft SQL Server, version: 8.00.194
    09:52:47,593 INFO SettingsFactory:78 - JDBC driver: Microsoft SQL Server 2005 JDBC Driver, version: 1.0.809.102
    09:52:47,609 INFO Dialect:92 - Using dialect: org.hibernate.dialect.SQLServerDialect
    09:52:47,625 INFO TransactionFactoryFactory:31 - Using default transaction strategy (direct JDBC transactions)
    09:52:47,625 INFO TransactionManagerLookupFactory:33 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
    09:52:47,625 INFO SettingsFactory:125 - Automatic flush during beforeCompletion(): disabled
    09:52:47,625 INFO SettingsFactory:129 - Automatic session close at end of transaction: disabled
    09:52:47,625 INFO SettingsFactory:144 - Scrollable result sets: enabled
    09:52:47,625 INFO SettingsFactory:152 - JDBC3 getGeneratedKeys(): enabled
    09:52:47,625 INFO SettingsFactory:160 - Connection release mode: null
    09:52:47,625 INFO SettingsFactory:187 - Default batch fetch size: 1
    09:52:47,625 INFO SettingsFactory:191 - Generate SQL with comments: disabled
    09:52:47,625 INFO SettingsFactory:195 - Order SQL updates by primary key: disabled
    09:52:47,625 INFO SettingsFactory:334 - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
    09:52:47,625 INFO ASTQueryTranslatorFactory:21 - Using ASTQueryTranslatorFactory
    09:52:47,625 INFO SettingsFactory:203 - Query language substitutions: {}
    09:52:47,625 INFO SettingsFactory:209 - Second-level cache: enabled
    09:52:47,625 INFO SettingsFactory:213 - Query cache: disabled
    09:52:47,625 INFO SettingsFactory:321 - Cache provider: org.hibernate.cache.NoCacheProvider
    09:52:47,625 INFO SettingsFactory:228 - Optimize cache for minimal puts: disabled
    09:52:47,625 INFO SettingsFactory:237 - Structured second-level cache entries: disabled
    09:52:47,625 INFO SettingsFactory:257 - Echoing all SQL to stdout
    09:52:47,625 INFO SettingsFactory:261 - Statistics: disabled
    09:52:47,625 INFO SettingsFactory:265 - Deleted entity synthetic identifier rollback: disabled
    09:52:47,625 INFO SettingsFactory:279 - Default entity-mode: pojo
    09:52:47,703 INFO SessionFactoryImpl:152 - building session factory
    09:52:47,999 INFO SessionFactoryObjectFactory:82 - Not binding factory to JNDI, no JNDI name configured
    09:52:47,999 INFO SessionFactoryImpl:379 - Checking 0 named queries
    09:52:48,031 DEBUG SQL:324 - select dossierinc0_.numeroDossier as numeroDo1_1_, dossierinc0_1_.libelleDossier as libelleD2_7_1_, dossierinc0_1_.dateReception as dateRece3_7_1_, dossierinc0_1_.idTypeDossier as idTypeDo4_7_1_, dossierinc0_1_.idConseiller as idConsei5_7_1_, dossierinc0_1_.idAffilie as idAffilie7_1_, dossier1_.numeroDossier as numeroDo1_0_, dossier1_.libelleDossier as libelleD2_7_0_, dossier1_.dateReception as dateRece3_7_0_, dossier1_.idTypeDossier as idTypeDo4_7_0_, dossier1_.idConseiller as idConsei5_7_0_, dossier1_.idAffilie as idAffilie7_0_, case when dossier1_1_.numeroDossier is not null then 1 when dossier1_.numeroDossier is not null then 0 end as clazz_0_ from DPI_DB.dbo.DossierIncomplet dossierinc0_ inner join DPI_DB.dbo.Dossier dossierinc0_1_ on dossierinc0_.numeroDossier=dossierinc0_1_.numeroDossier left outer join DPI_DB.dbo.Dossier dossier1_ on dossierinc0_.numeroDossier=dossier1_.numeroDossier left outer join DPI_DB.dbo.DossierIncomplet dossier1_1_ on dossier1_.numeroDossier=dossier1_1_.numeroDossier where dossierinc0_.numeroDossier=?
    Hibernate: select dossierinc0_.numeroDossier as numeroDo1_1_, dossierinc0_1_.libelleDossier as libelleD2_7_1_, dossierinc0_1_.dateReception as dateRece3_7_1_, dossierinc0_1_.idTypeDossier as idTypeDo4_7_1_, dossierinc0_1_.idConseiller as idConsei5_7_1_, dossierinc0_1_.idAffilie as idAffilie7_1_, dossier1_.numeroDossier as numeroDo1_0_, dossier1_.libelleDossier as libelleD2_7_0_, dossier1_.dateReception as dateRece3_7_0_, dossier1_.idTypeDossier as idTypeDo4_7_0_, dossier1_.idConseiller as idConsei5_7_0_, dossier1_.idAffilie as idAffilie7_0_, case when dossier1_1_.numeroDossier is not null then 1 when dossier1_.numeroDossier is not null then 0 end as clazz_0_ from DPI_DB.dbo.DossierIncomplet dossierinc0_ inner join DPI_DB.dbo.Dossier dossierinc0_1_ on dossierinc0_.numeroDossier=dossierinc0_1_.numeroDossier left outer join DPI_DB.dbo.Dossier dossier1_ on dossierinc0_.numeroDossier=dossier1_.numeroDossier left outer join DPI_DB.dbo.DossierIncomplet dossier1_1_ on dossier1_.numeroDossier=dossier1_1_.numeroDossier where dossierinc0_.numeroDossier=?
    09:52:48,093 INFO DefaultLoadEventListener:85 - Error performing load command
    org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of ma.rami.hibernate.model.DossierIncomplet.setNumeroDossier
    at org.hibernate.tuple.PojoTuplizer.setPropertyValuesWithOptimizer(PojoTuplizer.java:203)
    at org.hibernate.tuple.PojoTuplizer.setPropertyValues(PojoTuplizer.java:173)
    at org.hibernate.persister.entity.BasicEntityPersister.setPropertyValues(BasicEntityPersister.java:2919)
    at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:113)
    at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:530)
    at org.hibernate.loader.Loader.doQuery(Loader.java:436)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
    at org.hibernate.loader.Loader.loadEntity(Loader.java:1345)
    at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:116)
    at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:101)
    at org.hibernate.persister.entity.BasicEntityPersister.load(BasicEntityPersister.java:2471)
    at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:351)
    at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:332)
    at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:113)
    at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:75)
    at org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:643)
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:59)
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:84)
    at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:134)
    at ma.rami.hibernate.model.DossierIncomplet$$EnhancerByCGLIB$$e0d6326e.getMotifRejet(<generated>)
    at DossierManager.addMotifToDossierIncomplet(DossierManager.java:37)
    at DossierManager.main(DossierManager.java:19)
    Caused by: net.sf.cglib.beans.BulkBeanException: ma.rami.hibernate.model.DossierIncomplet$$EnhancerByCGLIB$$e0d6326e cannot be cast to java.lang.Long
    at ma.rami.hibernate.model.DossierIncomplet$$BulkBeanByCGLIB$$fa837b71.setPropertyValues(<generated>)
    at org.hibernate.tuple.PojoTuplizer.setPropertyValuesWithOptimizer(PojoTuplizer.java:200)
    ... 21 more
    Caused by: java.lang.ClassCastException: ma.rami.hibernate.model.DossierIncomplet$$EnhancerByCGLIB$$e0d6326e cannot be cast to java.lang.Long
    ... 23 more
    Exception in thread "main" org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of ma.rami.hibernate.model.DossierIncomplet.setNumeroDossier
    at org.hibernate.tuple.PojoTuplizer.setPropertyValuesWithOptimizer(PojoTuplizer.java:203)
    at org.hibernate.tuple.PojoTuplizer.setPropertyValues(PojoTuplizer.java:173)
    at org.hibernate.persister.entity.BasicEntityPersister.setPropertyValues(BasicEntityPersister.java:2919)
    at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:113)
    at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:530)
    at org.hibernate.loader.Loader.doQuery(Loader.java:436)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
    at org.hibernate.loader.Loader.loadEntity(Loader.java:1345)
    at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:116)
    at org.hibernate.loader.entity.EntityLoader.load(EntityLoader.java:101)
    at org.hibernate.persister.entity.BasicEntityPersister.load(BasicEntityPersister.java:2471)
    at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:351)
    at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:332)
    at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:113)
    at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:75)
    at org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:643)
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:59)
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:84)
    at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:134)
    at ma.rami.hibernate.model.DossierIncomplet$$EnhancerByCGLIB$$e0d6326e.getMotifRejet(<generated>)
    at DossierManager.addMotifToDossierIncomplet(DossierManager.java:37)
    at DossierManager.main(DossierManager.java:19)
    Caused by: net.sf.cglib.beans.BulkBeanException: ma.rami.hibernate.model.DossierIncomplet$$EnhancerByCGLIB$$e0d6326e cannot be cast to java.lang.Long
    at ma.rami.hibernate.model.DossierIncomplet$$BulkBeanByCGLIB$$fa837b71.setPropertyValues(<generated>)
    at org.hibernate.tuple.PojoTuplizer.setPropertyValuesWithOptimizer(PojoTuplizer.java:200)
    ... 21 more
    Caused by: java.lang.ClassCastException: ma.rami.hibernate.model.DossierIncomplet$$EnhancerByCGLIB$$e0d6326e cannot be cast to java.lang.Long
    ... 23 more

  9. #9
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    09:52:48,093 INFO DefaultLoadEventListener:85 - Error performing load command
    org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of ma.rami.hibernate.model.DossierIncomplet.setNumeroDossier

    salut, essai de mettre le reflection_optimizer a false dans ton fichier hibernate-beans.xml (si tu utilise spring avec hibernate) ou dans ton hibernate.properties (que tu nhj'as pas l'air d avoir crée d'ailleurs, tu le crée et tu ajoute cette ligne : hibernate.cglib.use_reflection_optimizer false.)

  10. #10
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par JoloKossovar Voir le message
    09:52:48,093 INFO DefaultLoadEventListener:85 - Error performing load command
    org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of ma.rami.hibernate.model.DossierIncomplet.setNumeroDossier

    salut, essai de mettre le reflection_optimizer a false dans ton fichier hibernate-beans.xml (si tu utilise spring avec hibernate) ou dans ton hibernate.properties (que tu nhj'as pas l'air d avoir crée d'ailleurs, tu le crée et tu ajoute cette ligne : hibernate.cglib.use_reflection_optimizer false.)
    je travaille avec eclipse est dans l'interface dédiée à l'édition du fichier hibernate.cfg.xml, donne la possibilité d'ajouter des propriétés pour hibernate,
    cette propriétée (hibernate.cglib.use_reflection_optimizer) existe déjà et est fixée à false.

  11. #11
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Ok,
    alors cette configuration ne doit pas etre lu ...
    deja tu a le message au tout debut de ton log qui dit qu hibernate n a pas trouvé de fichier de properties et ensuite :
    org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) qui signifie que le hibernate.cglib.use_reflection_optimizer n'est pas fixé a false.

    Edition : autant pour moi, la config est bien lu .. c'est curieux ... ^^

    Caused by: net.sf.cglib.beans.BulkBeanException: ma.rami.hibernate.model.DossierIncomplet$$EnhancerByCGLIB$$e0d6326e cannot be cast to java.lang.Long
    at ma.rami.hibernate.model.DossierIncomplet$$BulkBeanByCGLIB$$fa837b71.setPropertyValues(<generated>)
    at org.hibernate.tuple.PojoTuplizer.setPropertyValuesWithOptimizer(PojoTuplizer.java:200)
    ... 21 more
    Caused by: java.lang.ClassCastException: ma.rami.hibernate.model.DossierIncomplet$$EnhancerByCGLIB$$e0d6326e cannot be cast to java.lang.Long

    Pourtant le log stipule bien qu il essaie d utiliser l optimizer de la cglib ...

  12. #12
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 951
    Points : 4 376
    Points
    4 376
    Par défaut
    Citation Envoyé par JoloKossovar Voir le message
    Ok,
    alors cette configuration ne doit pas etre lu ...
    deja tu a le message au tout debut de ton log qui dit qu hibernate n a pas trouvé de fichier de properties et ensuite :
    org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) qui signifie que le hibernate.cglib.use_reflection_optimizer n'est pas fixé a false.

    Edition : autant pour moi, la config est bien lu .. c'est curieux ... ^^

    Caused by: net.sf.cglib.beans.BulkBeanException: ma.rami.hibernate.model.DossierIncomplet$$EnhancerByCGLIB$$e0d6326e cannot be cast to java.lang.Long
    at ma.rami.hibernate.model.DossierIncomplet$$BulkBeanByCGLIB$$fa837b71.setPropertyValues(<generated>)
    at org.hibernate.tuple.PojoTuplizer.setPropertyValuesWithOptimizer(PojoTuplizer.java:200)
    ... 21 more
    Caused by: java.lang.ClassCastException: ma.rami.hibernate.model.DossierIncomplet$$EnhancerByCGLIB$$e0d6326e cannot be cast to java.lang.Long

    Pourtant le log stipule bien qu il essaie d utiliser l optimizer de la cglib ...

    un problème de cast peut être causé par une mapping incorrect : vérifiez vos xml…

  13. #13
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    A priori, ce n'est pas la cause ici mais c clair que ca vaudrai le coup d essayer un truc tout bete ...

    Ds ta classe qui pose probleme, change le java.lang.Long par long
    Et tu ne précise pas le type de donnée ds ton fichier de mapping.

    Je ne pense pas que ce soit le probleme, dans ton cas mais ca vaut le coup d essayer quand meme ...

  14. #14
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut Problème Hibernate
    Citation Envoyé par JeitEmgie Voir le message
    un problème de cast peut être causé par une mapping incorrect : vérifiez vos xml…

    code : Dossier.java

    public class Dossier
    {
    protected java.lang.Long numeroDossier;
    protected java.lang.String libelleDossier;
    protected java.util.Date dateReception;

    protected Affilie affilie;
    protected TypeDossier typeDossier;
    protected Conseiller conseiller;

    public Dossier() {
    // TODO Auto-generated constructor stub
    }

    public java.lang.Long getNumeroDossier() {
    return numeroDossier;
    }

    public void setNumeroDossier(java.lang.Long numeroDossier) {
    this.numeroDossier = numeroDossier;
    }

    public java.lang.String getLibelleDossier() {
    return libelleDossier;
    }

    public void setLibelleDossier(java.lang.String libelleDossier) {
    this.libelleDossier = libelleDossier;
    }

    public java.util.Date getDateReception() {
    return dateReception;
    }

    public void setDateReception(java.util.Date dateReception) {
    this.dateReception = dateReception;
    }

    public Affilie getAffilie() {
    return affilie;
    }

    public void setAffilie(Affilie affilie) {
    this.affilie = affilie;
    }

    public Conseiller getConseiller() {
    return conseiller;
    }

    public void setConseiller(Conseiller conseiller) {
    this.conseiller = conseiller;
    }


    public TypeDossier getTypeDossier() {
    return typeDossier;
    }

    public void setTypeDossier(TypeDossier typeDossier) {
    this.typeDossier = typeDossier;
    }


    }

    code: Dossier.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

    <hibernate-mapping package="ma.rami.hibernate.model">
    <class name="Dossier" table="DPI_DB.dbo.Dossier" polymorphism="implicit" >
    <id name="numeroDossier" column="numeroDossier" >
    <generator class="increment" />
    </id>
    <property name="libelleDossier" column="libelleDossier" />
    <property name="dateReception" column="dateReception" />
    <many-to-one name="typeDossier" column="idTypeDossier" not-null="true" class="TypeDossier" />

    <many-to-one name="conseiller" column="idConseiller" not-null="true" class="Conseiller" />
    <many-to-one name="affilie" column="idAffilie" not-null="true" class="Affilie" />

    <joined-subclass name="DossierIncomplet" table="DPI_DB.dbo.DossierIncomplet" >
    <key column="numeroDossier" />
    <one-to-one name="numeroDossier" class="Dossier" />
    <set name="motifRejet" table="DPI_DB.dbo.DosRaisonRejet">
    <key column="numeroDossier" ></key>
    <many-to-many column="idMotif" class="MotifRejet" ></many-to-many>
    </set>


    </joined-subclass>

    </class>

    </hibernate-mapping>


    Code : DossierIncomplet.java
    public class DossierIncomplet extends Dossier
    {
    private Set<MotifRejet> motifRejet= new HashSet<MotifRejet>();
    private Map<Documents,Long> piecesManquants = new HashMap<Documents,Long>();


    public DossierIncomplet() {
    // TODO Auto-generated constructor stub
    }


    public Map<Documents, Long> getPiecesManquants() {
    return piecesManquants;
    }

    public void setPiecesManquants(Map<Documents, Long> piecesManquants) {
    this.piecesManquants = piecesManquants;
    }


    public Set<MotifRejet> getMotifRejet() {
    return motifRejet;
    }

    public void setMotifRejet(Set<MotifRejet> motifRejet) {
    this.motifRejet = motifRejet;
    }

    }

    Code: MotifRejet.java

    public class MotifRejet
    {
    private java.lang.Long idMotif;
    private java.lang.String libelleRejet;

    public MotifRejet() {
    // TODO Auto-generated constructor stub
    }
    public java.lang.Long getIdMotif() {
    return idMotif;
    }
    private void setIdMotif(java.lang.Long idMotif) {
    this.idMotif = idMotif;
    }
    public java.lang.String getLibelleRejet() {
    return libelleRejet;
    }
    public void setLibelleRejet(java.lang.String libelleRejet) {
    this.libelleRejet = libelleRejet;
    }

    }

    pour info:
    1-Quand j'insère un objet de type Dossier c'est OK, quand j'insère un Objet de type DossierIncomplet il est inséré automatiquement dans la table mère et fille, et c'est parfait , jusque là c'est très bien....
    2-d'après mon premier message posté, je vous signale que mon problème surgit uniquement, quand j'essaie de récupérer un objet de type DossierIncompler (many-to-many avec la Class MotifRejet) pour le lier à un Objet de type MotifRejet afin de l'insérer dans la table d'association entre DossierIncomplet et MotifRejet;
    3-Autre information, pour la table DossierIncomplet elle est composée uniquement de la colonne NumeroDossier "héritée" de sa classe mère Dossier.

  15. #15
    Membre actif Avatar de a.snaps
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 209
    Points : 241
    Points
    241
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <one-to-one name="numeroDossier" class="Dossier" />
    Et non un Long

  16. #16
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut Problème Hibernate
    Citation Envoyé par a.snaps Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <one-to-one name="numeroDossier" class="Dossier" />
    Et non un Long
    stp, tu peux m'expliquer ce que tu veux dire ?

  17. #17
    Membre actif Avatar de a.snaps
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 209
    Points : 241
    Points
    241
    Par défaut
    Le setter de ton champ numeroDossier prend un Long et non un Dossier!

  18. #18
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 951
    Points : 4 376
    Points
    4 376
    Par défaut
    Citation Envoyé par nyrami Voir le message
    stp, tu peux m'expliquer ce que tu veux dire ?
    cela veut dire que la relation en Java s'exprime par des objets Java et non par la clé primaire de leur représentation dans la DB…

    et que c'est hibernate qui fait le travail de conversion pour vous…

  19. #19
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 29
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par a.snaps Voir le message
    Le setter de ton champ numeroDossier prend un Long et non un Dossier!

    Ouiiii vous avez raison merci bcp, c'est ça , c'est en fait l'héritage qui m'a posé problème...!!!

    maintenant voilà dans cette partie de l'héritage, j'ai désactivé la ligne correspondant à la relation one-to-one... (je n'avais pas le choix d'ailleurs), et ça marche à merveille , j'ai pu faire le lien des clés dans la table d'association.
    le problème c'est que dans la documentation Hibernate, dans le mapping relatif à l'héritage, on incite sur les mappers d'ajouter une relation "many to one" vers la classe mère. Dans le lien suivant
    http://www.hibernate.org/hib_docs/v3...heritance.html
    vous allez trouver la phrase suivante :
    "Pour importe laquelle de ces stratégies (en parlant du mapping héritage), une association polymorphique vers la classe racine Payment est mappée en utilisant <many-to-one>. "

    peut que j'ai mal compris cette consigne, sinon
    ma question comment je dois le faire dans ce cas?

    Merci beaucoup de votre aide, vraiment je suis très reconnaissant à vous tous





    code:
    <joined-subclass name="DossierIncomplet" table="DPI_DB.dbo.DossierIncomplet" >
    <key column="numeroDossier" />
    <!-- <one-to-one name="Dossier" column="numeroDossier" class="Dossier" /> -->
    <set name="motifRejet" table="DPI_DB.dbo.DosRaisonRejet">
    <key column="numeroDossier" ></key>
    <many-to-many column="idMotif" class="MotifRejet" ></many-to-many>
    </set>

Discussions similaires

  1. Probléme de mapping hibernate et oracle 11g
    Par fetano dans le forum Hibernate
    Réponses: 1
    Dernier message: 10/08/2014, 19h09
  2. [Mapping] Problème de mapping Hibernate XML
    Par khoukha83 dans le forum Hibernate
    Réponses: 1
    Dernier message: 18/10/2012, 13h14
  3. Problème de mapping Hibernate
    Par daly2009 dans le forum Hibernate
    Réponses: 0
    Dernier message: 29/09/2010, 13h23
  4. Problème de mapping hibernate
    Par eljoemed dans le forum Hibernate
    Réponses: 0
    Dernier message: 25/08/2010, 16h21
  5. [Data] Problème de mapping hibernate
    Par erwan.bodere dans le forum Spring
    Réponses: 1
    Dernier message: 28/04/2007, 20h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo