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);
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) .
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.
Cela crée trois objets supplémentaires pour les commentaires.