Erreur requête hibernate
- Groupe 09
- Lien projet :
https://forge.univ-lyon1.fr/m1if10-projet-transversal/m1if10-projet-transversal-2020/p1712760/summeet> - Je précise que tout est réalisé en local
- Comme dit lors de la permanence, nous avons un Groupe (composé d'un nom, et d'un UtilisateurAdministrateur) dans le modèle (cf https://forge.univ-lyon1.fr/p1712760/summeet/-/blob/tarik/summeet/src/main/java/fr/summeet/modele/Groupe.java). Nous avons alors implémenté une DAO permettant l'ajout d'un groupe dans la BD ainsi que la requête permettant d'en récupérer un (cf. https://forge.univ-lyon1.fr/p1712760/summeet/-/blob/tarik/summeet/src/main/java/fr/summeet/dao/GroupeDAO.java , voir fonction
getGroupe). - A l'exécution du test (cf. https://forge.univ-lyon1.fr/p1712760/summeet/-/blob/tarik/summeet/src/test/java/fr/summeet/dao/GroupeDAOTest.java), l'ajout semble fonctionner normalement, puisque je retrouve les ajouts dans la BD en local. Cependant, lors de l'exécution de la requête qui permet de récupérer un groupe stocké dans la BD, j'obtiens l'erreur suivante :
java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance beforeQuery flushing: fr.summeet.modele.UtilisateurInscrit
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:144)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:155)
at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1407)
at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1444)
at fr.summeet.dao.GroupeDAO.getGroupe(GroupeDAO.java:70)
at fr.summeet.dao.GroupeDAOTest.testCreateOrUpdate(GroupeDAOTest.java:36)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance beforeQuery flushing: fr.summeet.modele.UtilisateurInscrit
at org.hibernate.engine.internal.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:279)
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:462)
....
- Alors que le print essayé pour debuguer affiche le bon résultat, l'instruction
q.getSingleResult()provoque une erreur.
Edited by COQUERY EMMANUEL