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

JPA Java Discussion :

Erreur org.hibernate.TransientObjectException lors de requêtes JPQL


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Par défaut Erreur org.hibernate.TransientObjectException lors de requêtes JPQL
    Bonjour,

    j'ai 3 entités : Membre, Questionnaire et ListeQuestionnaire.
    ListeQuestionnaire correspond à l'association ManyToMany entre Membre et Questionnaire.
    J'ai aussi 3 dao, un pour chaque entité.

    Le problème vient du dao de ListeQuestionnaire : toutes les méthodes faisant directement appel à l'entity manager (genre persist, merge, delete, find) fonctionnent bien.
    Par contre, dès que je tente une requête JPQL, ça plante au moment du getResultList() ou getSingleResult() avec l'erreur suivante :
    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
    java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: fr.statlife.protoE4N.data.entites.ListeQuestionnaire.membre -> fr.statlife.protoE4N.data.entites.Membre
    	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1232)
    	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1168)
    	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:250)
    	at fr.statlife.protoE4N.data.dao.jpa.ListeQuestionnaireDaoImpl.findAll(ListeQuestionnaireDaoImpl.java:33)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
    	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:202)
    	at $Proxy28.findAll(Unknown Source)
    	at fr.statlife.protoE4N.data.dao.jpa.TestListeQuestionnaireDao.testFindAll(TestListeQuestionnaireDao.java:79)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    	at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
    	at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82)
    	at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
    	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180)
    	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
    	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
    Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: fr.statlife.protoE4N.data.entites.ListeQuestionnaire.membre -> fr.statlife.protoE4N.data.entites.Membre
    	at org.hibernate.engine.CascadingAction$9.noCascade(CascadingAction.java:387)
    	at org.hibernate.engine.Cascade.cascade(Cascade.java:172)
    	at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:154)
    	at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:145)
    	at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:88)
    	at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:58)
    	at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:1175)
    	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1251)
    	at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
    	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:241)
    	... 42 more
    je comprends pas pourquoi il me dit que le Membre est un objet transient alors que je l'ai bien persisté en base avant de construire l'objet listeQuestionnaire. D'ailleurs sans ça la méthode em.find() ne marcherait pas...

    Voici un bon bout de la classe ListeQuestionnaire :
    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
    81
    82
    83
    84
    85
    86
    87
    88
    @Entity
    public class ListeQuestionnaire extends DomainObject {
     
    	private static final long serialVersionUID = -6692608372646294912L;
     
    	//clé primaire composite
    	@EmbeddedId
    	private ListeQuestionnaireId id = new ListeQuestionnaireId();
     
    	/*
    	 * Pour les deux attributs suivant, on fait le lien entre l'attribut et sa colonne dans la table
    	 * via l'annotation @JoinColumn
    	 * les propriétés (insertable=false, updatable=false) spécifient que JPA ne doit pas gérer ces clés
    	 * étrangères car c'est fait directement dans par l'application via le constructeur
    	 */
    	@ManyToOne(optional=false)
    	@JoinColumn(name="idMembre", insertable=false, updatable=false)
    	private Membre membre;
    	@ManyToOne(optional=false)
    	@JoinColumn(name="idQuestionnaireReduit", insertable=false, updatable=false)
    	private QuestionnaireReduit questionnaireReduit;
     
    	private Boolean aRepondu; 
     
    	/*
    	 * Constructeurs
    	 */
    	public ListeQuestionnaire(){
     
    	}
     
    	public ListeQuestionnaire(Membre membre,
    			QuestionnaireReduit questionnaireReduit) {
    		//On fixe les clés étrangères
    		getId().setIdMembre(membre.getIdMembre());
    		getId().setIdQuestionnaireReduit(questionnaireReduit.getIdQuestionnaireReduit());
     
    		//Associations bidirectionnelles
    		this.membre = membre;
    		this.questionnaireReduit = questionnaireReduit;
    		membre.getListeQuestionnaires().add(this);
    		questionnaireReduit.getListeQuestionnaire().add(this);
    	}
     
     
     
    	/**
             * Classe définissant la clé primaire composite
             */
    	@Embeddable
    	public static class ListeQuestionnaireId implements Serializable{
    		private static final long serialVersionUID = 1L;
     
    		//Composantes de la clé primaire composite
    		private String idMembre;
    		private Long idQuestionnaireReduit;
     
    		/*
    		 * Getters and Setters
    		 */
    		public String getIdMembre() {
    			return idMembre;
    		}
    		public void setIdMembre(String idMembre) {
    			this.idMembre = idMembre;
    		}
    		public Long getIdQuestionnaireReduit() {
    			return idQuestionnaireReduit;
    		}
    		public void setIdQuestionnaireReduit(Long idQuestionnaireReduit) {
    			this.idQuestionnaireReduit = idQuestionnaireReduit;
    		}
     
    		/*
    		 * (non-Javadoc)
    		 * @see java.lang.Object#toString()
    		 */
    		@Override
    		public String toString() {
    			return "Id [idMembre=" + idMembre + ", idQuestionnaireReduit="
    					+ idQuestionnaireReduit + "]";
    		}
    	}
     
    	/*
    	 * Getters and Setters
    	 */
    }
    et un exemple de relation inverse (dans membre):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	//Relation inverse de la relation ManyToOne ListeQuestionnaire -> Membre
    	//Cascade de suppression : la suppression d'un Membre entraine la suppression des 
    	//ListeQuestionnaire correspondant
    	@OneToMany(mappedBy="membre", cascade={CascadeType.REMOVE}, fetch=FetchType.LAZY)
    	private Set<ListeQuestionnaire> listeQuestionnaires = new HashSet<ListeQuestionnaire>();
    merci d'avance pour toutes vos suggestions

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    fais nous voir le code en cause du crash, tu as un pb classique, tu essaie d'attacher une entité non managée à un objet que tu vx persister.

  3. #3
    Membre éclairé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Par défaut
    voici mon code de test :
    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
    @Before
        public void startTransaction() throws ParseException{
            benji = new Membre();
            benji.setIdMembre("ben.joris");
            benji = serviceMembre.saveOne(benji);
     
            lola = new Membre();
            lola.setIdMembre("lola.harris");
            lola = serviceMembre.saveOne(lola);
     
            QuestionnaireReduit qReduit = new QuestionnaireReduit();
            qReduit = qReduitDao.saveOne(qReduit);
     
     
            listeQuestionnaire1 = new ListeQuestionnaire(benji, qReduit);
            listeQuestionnaire1.setaRepondu(false);
            listeQuestionnaire1 = listeQuestionnaireDao.saveOne(listeQuestionnaire1);
        }
     
        @Test
        @Transactional
        @Rollback
        public void testFindAll() {
            List<ListeQuestionnaire> qReduitsAttendus = new ArrayList<ListeQuestionnaire>();
            qReduitsAttendus.add(listeQuestionnaire1);
     
            Assert.assertEquals(qReduitsAttendus, listeQuestionnaireDao.findAll());
        }
    sachant que serviceMembre.saveOne(benji); renvoie le membre persisté par la méthode merge de l'entity manager, je pensais que du coup l'objet était managé, non?

  4. #4
    Membre éclairé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Par défaut
    dois-je déduire de ce silence que mon problème est pas si classique que ça?

    ça fait maintenant 3 jours que je suis dessus et faut vraiment que je trouve une solution, alors si quelqu'un à la moindre piste, même extravagante, qu'il hésite pas ! Je suis prête à tout tenter là...

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Je crois savoir d'où ca vient , voila ce que tu vas faire :
    -Ton membre à l'air bien persisté , ainsi que ton qreduit, ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //On fixe les clés étrangères
    		getId().setIdMembre(membre.getIdMembre());
    		getId().setIdQuestionnaireReduit(questionnaireReduit.getIdQuestionnaireReduit());
     
    		//Associations bidirectionnelles
    		this.membre = membre;
    		this.questionnaireReduit = questionnaireReduit;
    		membre.getListeQuestionnaires().add(this);
    		questionnaireReduit.getListeQuestionnaire().add(this);
    Ce code , tu le vires complètement, les associations entre entités après un bon mapping ne doivent être faites que via des setteurs. pas d'affectations d'id à faire egalement pour les associations, le seul endroit où tu dois faire le couplage c'est dans ton mapping, le reste tu le laisses à la charge de JPA.
    Donc en fait apres avoir persisté ta liste de questionnaire tu fais ca sur l'entité persistée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    listeQuestionnaire1.setQuestionnaireReduit(qReduit);
    listeQuestionnaire1.setMembre(membre);
    et là tu fais un update base sur listeQuestionnaire1
    Je crois que ca marchera mieux, en passant n'oublie pas de compléter les getters et setters dans La classe ListeQuestionnaire sur Membre et QReduit.

  6. #6
    Membre éclairé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Par défaut
    un grand merci pour ta réponse, un peu d'espoir renait

    J'ai donc fait ce que tu as dit : j'ai supprimé le constructeur qui prenait un membre et un questionnaire, et j'ai modifié le test comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		listeQuestionnaire1 = new ListeQuestionnaire();
    		listeQuestionnaire1.setaRepondu(false);
    		listeQuestionnaire1 = listeQuestionnaireDao.saveOne(listeQuestionnaire1);
    		listeQuestionnaire1.setMembre(benji);
    		listeQuestionnaire1.setQuestionnaireReduit(qReduit);
    		listeQuestionnaire1 = listeQuestionnaireDao.updateOne(listeQuestionnaire1);
    mais j'ai toujours la même erreur TransientObjectException...

    est ce qu'il peut y avoir un problème dans le mapping alors que le schema de la base est bien créé comme il faut?

    EDIT : je viens de revoir ta remarque sur les setter sur membre et qReduit, ils sont bien là mais ce sont des setters basiques... Le fait de laisser JPA gérer les clés étrangères signifie bien qu'il faut pas non plus mettre à jour la clé primaire dans les setters?

  7. #7
    Membre éclairé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Par défaut
    Bon, en investigant ce problème de violation de clé étrangère, j'ai découvert que les requêtes hibernate d'insert des ListeQuestionnaire ne sont faites que lors de l'appel des méthodes findAll et countAll (méthodes qui contiennent une requête JPQL) :
    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
    Hibernate: 
        select
            membre0_.idMembre as idMembre1_1_,
            membre0_.codeIdentification as codeIden2_1_1_,
            membre0_.dateNaissance as dateNais3_1_1_,
            membre0_.infosPerso_idInfosPerso as infosPerso6_1_1_,
            membre0_.password as password1_1_,
            membre0_.sexe as sexe1_1_,
            infosperso1_.idInfosPerso as idInfosP1_2_0_,
            infosperso1_.codePostal as codePostal2_0_,
            infosperso1_.email as email2_0_,
            infosperso1_.poids as poids2_0_,
            infosperso1_.taille as taille2_0_,
            infosperso1_.ville as ville2_0_ 
        from
            Membre membre0_ 
        left outer join
            InfosPerso infosperso1_ 
                on membre0_.infosPerso_idInfosPerso=infosperso1_.idInfosPerso 
        where
            membre0_.idMembre=?
    Hibernate: 
        insert 
        into
            Questionnaire
            (numero, sexeDestinataire, titre) 
        values
            (?, ?, ?)
    --------- TEST : enregistrement listeQuestionnaire1...
    Hibernate: 
        select
            listequest0_.idMembre as idMembre4_0_,
            listequest0_.idQuestionnaire as idQuesti2_4_0_,
            listequest0_.aRepondu as aRepondu4_0_ 
        from
            ListeQuestionnaire listequest0_ 
        where
            listequest0_.idMembre=? 
            and listequest0_.idQuestionnaire=?
    --------- TEST : fin startTransaction...
    --------- TEST : testFindAll...
    Hibernate: 
        insert 
        into
            ListeQuestionnaire
            (aRepondu, idMembre, idQuestionnaire) 
        values
            (?, ?, ?)
    WARN  - JDBCExceptionReporter      - SQL Error: 1452, SQLState: 23000
    ERROR - JDBCExceptionReporter      - Cannot add or update a child row: a foreign key constraint fails (`protoe4n`.`listequestionnaire`, CONSTRAINT `FK8C6EC97C87F51B2E` FOREIGN KEY (`idMembre`) REFERENCES `Membre` (`idMembre`))
    ERROR - tractFlushingEventListener - Could not synchronize database state with session
    en mettant des points d'arrêt dans le code, j'ai bien vu que ce n'est que lors du return query.getResultList(); de la méthode findAll que la requête hibernate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Hibernate: 
        insert 
        into
            ListeQuestionnaire
            (aRepondu, idMembre, idQuestionnaire) 
        values
            (?, ?, ?)
    est faite.

    ce qui veut dire que pour les autres tests (ceux qui sont ok) l'insertion n'est pas faite dans la base de données. D'ailleurs la requête hibernate "insert into" n'apparait pas dans la console pour ces tests là.

    C'est sans doute une question très conne pour quelqu'un qui connait bien JPA/Hibernate, mais pourquoi il fait pas l'insertion lorsque je fais listeQuestionnaire1 = listeQuestionnaireDao.saveOne(listeQuestionnaire1); ?

    la méthode saveOne est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	public T saveOne(T object)
    	{
    		return em.merge(object);
    	}
    et elle marche bien pour toutes autres entités...

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Par défaut Même soucis
    J'ai exactement le même soucis avec mes clés composité:
    ici: cliquez
    Si vous avez pu trouver une solution entre temps.

    Merci d'avance

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/08/2014, 17h42
  2. Réponses: 4
    Dernier message: 01/08/2011, 14h24
  3. L'erreur org.hibernate.MappingException: Unknown entity
    Par proganas dans le forum Hibernate
    Réponses: 1
    Dernier message: 22/07/2010, 18h20
  4. Réponses: 2
    Dernier message: 22/06/2009, 16h51
  5. Réponses: 1
    Dernier message: 03/07/2007, 14h57

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