Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2956 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Spring boot 3: relation many to many non sauvée en DB

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Spring boot 3: relation many to many non sauvée en DB

n°2480120
tompouss
Petit chat
Posté le 22-09-2024 à 17:32:12  profilanswer
 

Bonjour,
 
j'ai un bug mystique avec une relation many to many avec Spring Boot 3
 
contexte:
 
j'ai 2 entités: une entité QuizzEntity liée à TestEntity par une relation plusieurs à plusieurs donc via une table intermédiaire
 

Code :
  1. @Setter
  2.     @Getter
  3.     @ManyToMany(fetch = FetchType.EAGER,
  4.                 cascade = { CascadeType.PERSIST,
  5.                             CascadeType.MERGE}
  6.     )
  7.     @JoinTable(name = "quiz_test", joinColumns = @JoinColumn(name = "id_quiz" ), inverseJoinColumns = @JoinColumn(name = "id_test" ))
  8.     @JsonBackReference
  9.     Set<TestEntity> tests = new HashSet<>();


 
 

Code :
  1. @Setter
  2.     @ManyToMany(fetch = FetchType.EAGER,
  3.                 cascade = { CascadeType.PERSIST,
  4.                             CascadeType.MERGE,
  5.                             }
  6.     )
  7.     @JoinTable(name = "quiz_test",
  8.                 joinColumns = @JoinColumn(name = "id_test" ),
  9.                 inverseJoinColumns = @JoinColumn(name = "id_quiz" )
  10.     )
  11.     @JsonManagedReference
  12.     @JsonInclude(JsonInclude.Include.NON_NULL)
  13.     Set<QuizzEntity> quizzes = new HashSet<>();


 
 
le service TestService
 

Code :
  1. @Transactional
  2.     public void addExistingQuiz(String testId, String quizzId) {
  3.         // Find TestEntity and QuizzEntity
  4.         TestEntity test = testRepository.findById(Integer.parseInt(testId))
  5.                 .orElseThrow(() -> new EntityNotFoundException("Test with id " + testId + " not found" ));
  6.         QuizzEntity quiz = quizzRepository.findById(Integer.parseInt(quizzId))
  7.                 .orElseThrow(() -> new EntityNotFoundException("Quiz with id " + quizzId + " not found" ));
  8.         // Check if the quiz is already associated with the test
  9.             test.addQuizz(quiz);
  10.             quiz.addTest(test);
  11.             testRepository.saveAndFlush(test);
  12.             quizzRepository.saveAndFlush(quiz);// save to update the relationship
  13.     }


 
Voici le schéma DB:
 

Code :
  1. CREATE TABLE public.quiz_test (
  2.     id INT primary key GENERATED ALWAYS AS IDENTITY,
  3.    id_quiz int NOT NULL,
  4.    id_test int NOT NULL,
  5.     CONSTRAINT fk_quiz_test2_quizz FOREIGN KEY(id_quiz) REFERENCES public.quizz(id),
  6.     CONSTRAINT fk_quiz_test2_test FOREIGN KEY(id_test) REFERENCES public.test(id)
  7. );


 
Quand je fais le test d'ajout avec un client http, tout semble ok, et le get me renvoie bien le test avec le quizz lié.
 
Par contre la table quiz_test reste désespéremment vide (même après redémarrage du pc)
 
Je pige pas  
 
Merci pour votre aide
 
Thomas

mood
Publicité
Posté le 22-09-2024 à 17:32:12  profilanswer
 

n°2480140
tompouss
Petit chat
Posté le 23-09-2024 à 13:10:00  profilanswer
 

UPDATE:
 
en fait il faut préciser le schéma dans @JoinTable
ex:
@JoinTable(name = "quiz_test",
            schema = "public",
            joinColumns = @JoinColumn(name = "id_test", referencedColumnName = "id" ),
            inverseJoinColumns = @JoinColumn(name = "id_quiz", referencedColumnName = "id" ))


---------------
collectionneur de pâtes thermiques
n°2506956
beniben
Posté le 23-09-2025 à 14:29:38  profilanswer
 

c'est lié au fait que tu as hardcodé le schéma dans ton SQL de création de table.
 
Normalement, ça se fait pas comme ça. Ton schéma est spécifié dans l'url de ta data source.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Spring boot 3: relation many to many non sauvée en DB

 

Sujets relatifs
EOFError lors du boot sur un script .py[Compiler] Cold Boot Attack
Boot sector, coder un petit jeu ?Update d'un champ avec valeur sur une autre DB
Java Spring Boot - oauthaide Spring boot /jquery /api
Boot uefi pxe syslinuxProblème de relation JAVA EE
Plus de sujets relatifs à : Spring boot 3: relation many to many non sauvée en DB


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)