Maison > Questions et réponses > le corps du texte
J'essaie de conserver 6 commentaires dans la table Commentaire de la base de données en utilisant une clé étrangère pour l'identifiant de la publication, mais les 3 derniers commentaires écrasent les 3 premiers commentaires avec la clé étrangère nouvellement ajoutée.
Catégorie de test :
Comments comments = new Comments("1st Comment", new Date(System.currentTimeMillis())); Comments comments2 = new Comments("2st Comment", new Date(System.currentTimeMillis())); Comments comments3 = new Comments("3st Comment", new Date(System.currentTimeMillis())); ArrayList<Comments> arrayList = new ArrayList<>(); arrayList.add(comments); arrayList.add(comments2); arrayList.add(comments3); // Insert Without Comment Post post1 = new Post("1st Post", "1st Post Description", new ArrayList<Comments>(), new Date(System.currentTimeMillis())); postReposetory.save(post1); // Insert With Comment Post post2 = new Post("2st Post", "2st Post Description", arrayList, new Date(System.currentTimeMillis())); postReposetory.save(post2); // Update (Insert Comment) post1.setComments(arrayList); post1.setUpdatedAt(new Date(System.currentTimeMillis())); postReposetory.save(post1);
P粉0381618732024-04-02 11:19:49
Vous créez au total 3 instances de commentaires (donc 3 enregistrements dans la table de la base de données) au lieu de 3 instances par publication.
Lorsque vous mettez à jour le commentaire post1, vous aurez le commentaire post2 comme paramètre, donc la clé étrangère des commentaires vers post2 deviendra post1.
Si vous souhaitez 3 commentaires par publication, vous aurez besoin d'un total de 6 instances de commentaires (2 publications * 3 commentaires) .
P粉1876770122024-04-02 00:07:37
Cela se produit parce que vous mettez le même objet d'annotation et que la mise en veille prolongée pense que vous souhaitez connecter l'annotation de post2
更改为 post1
.
Il faut donc reconstruire ces trois annotations.
Comments comments = new Comments("1st Comment", new Date(System.currentTimeMillis())); Comments comments2 = new Comments("2st Comment", new Date(System.currentTimeMillis())); Comments comments3 = new Comments("3st Comment", new Date(System.currentTimeMillis())); ArrayListarrayList = new ArrayList<>(); arrayList.add(comments); arrayList.add(comments2); arrayList.add(comments3); // Insert With Comment Post post1 = new Post("1st Post", "1st Post Description", new ArrayList (), new Date(System.currentTimeMillis())); postReposetory.save(post1); // Insert Without Comment Post post2 = new Post("2st Post", "2st Post Description", arrayList, new Date(System.currentTimeMillis())); postReposetory.save(post2); // Update (Insert Comment) comments = new Comments("1st Comment", new Date(System.currentTimeMillis())); comments2 = new Comments("2st Comment", new Date(System.currentTimeMillis())); comments3 = new Comments("3st Comment", new Date(System.currentTimeMillis())); post1.setComments(List.of(comments, comments2, comments3)); post1.setUpdatedAt(new Date(System.currentTimeMillis())); postReposetory.save(post1);
Cela crée trois objets supplémentaires pour les commentaires.