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 persistance d'objet avec enfant déjà existant


Sujet :

Hibernate Java

  1. #1
    Futur Membre du Club Avatar de Cycnos
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Problème de persistance d'objet avec enfant déjà existant
    Bonjour,

    J'ai une application Java Spring Boot qui consulte une API externe faisant un retour en JSON. Ce retour JSON est parsé en objet Java à l'aide de Jackson. Cet objet est relativement complexe, il possède plusieurs liens (@OneToMany, @ManyToOne...) avec d'autres objets. Les ID des objets ne sont pas transmis dans le retour de l'API, ils sont généré par ma base MariaDB.

    Mon problème provient dans cette liaison de donnée, j'ai des objets fils qui sont déjà présents en base. Par exemple, un objet "Catégorie" est lié à un "Produit", le produit n'existe pas encore en base mais la catégorie elle oui. J'utilise @Cascade.Persist pour sauvegarder l'objet Produit en base ce qui implique la persistance de Catégorie. Mon objet Catégorie possède un "Nom" en champs que j'ai défini en @NaturalId. Ma sauvegarde s'effectue à l'aide de la méthode save() de la classe ProduitRepository qui extend CrudRepository, elle même utilisé dans ProduitService.

    Quand je tente de sauvegarder, j'ai un problème de duplication de donnée sur l'ID nom, c'est normal étant un id naturel, il doit être unique.
    Si je récupère l'objet Catégorie en base (à l'aide de CategorieRepository) et que je le place comme fils de l'objet Produit, j'ai une erreur comme quoi mon objet est détaché de sa session. Je ne suis pas hyper calé en transaction mais j'imagine que la session CategorieRepository n'est pas la même que ProduitRepository.

    J'ai des lacunes dans le fonctionnement d'Hibernate dans le contexte Spring boot et je ne sais pas quelle est la bonne méthode à appliquer pour résoudre mon problème. Si vous avez des pistes je suis preneur, merci !

  2. #2
    Futur Membre du Club Avatar de Cycnos
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Si quelqu'un a un jour un problème similaire j'ai trouvé une solution qui fonctionne. Je ne me sers plus de la Cascade sur l'objet fils posant problème, le Merge n'étant plus automatique je le fais à la main. Je récupère mes catégories en base avec CategorieRepository, je les inserts avant la sauvegarde de l'objet Produit et je sauvegarde moi même avec CategorieRepository pour ceux non existant en base. Plus de problème de session !

    Il y a peut être un moyen de gérer ça de manière plus élégante mais ça fonctionne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème dans noms d'objets avec espaces
    Par Macadoshis dans le forum Débuter
    Réponses: 1
    Dernier message: 14/05/2010, 17h10
  2. Persistance d'objets avec jdbc
    Par Demon-king dans le forum JDBC
    Réponses: 4
    Dernier message: 12/01/2010, 12h50
  3. Problème de type d'objet avec xmlbeans
    Par nicocolt dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 31/08/2009, 15h10
  4. Problème d'ajout d'objet avec clé étrangère
    Par zuzuu dans le forum Hibernate
    Réponses: 7
    Dernier message: 16/03/2009, 10h08
  5. Utiliser Java pour la persistence d'objets avec MySQL
    Par wallys dans le forum Persistance des données
    Réponses: 4
    Dernier message: 07/07/2008, 21h19

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