[JAVA] Comment supprimer / mettre à jour le champ de liste de OneToMany

problème

--Dispose des entités suivantes --dtlEntity est une donnée enfant (détails) --hdrEntity est le parent --hdrEntity a dtlEntity dans le champ de liste comme ci-dessous

HdrEntity


@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "tMitsumoriHdrEntity")
    @JsonIgnore
    private List<DtlEntity> dtlEntity;

--Sur le contrôleur, supprimez dtlEntity avec la méthode de suppression du référentiel, mais il semble disparaître à l'écran, mais l'écran se réveille après une autre requête, il semble que la persistance ne se fait pas bien

supposition

Contre-mesures

1. Ne supprimez pas directement l'entité associée

--S'il est lié, si vous le supprimez directement, les données resteront en hdr et la suppression reviendra.

dtlRepository.delete(dtlEntity);

2. Définissez orphanRemoveal sur true

//Tableau détaillé
	@OneToMany(cascade = CascadeType.ALL, orphanRemoval=true, fetch = FetchType.EAGER, mappedBy = "tMitsumoriHdrEntity")
	@JsonIgnore
    private List<DtlEntity> dtlEntity;

3. Le traitement d'une collection avec cascade = "all-delete-orphan" n'était plus référencé d'erreur

--Lorsque vous avez une entité associée dans une liste, vous devez la rendre persistante en effaçant l'association avec la méthode clear, en l'ajoutant, puis en la réintroduisant.

HdrEntity.setDtlEntity(saveDtlList);
HdRepository.save(HdrEntity);

A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance

--Une erreur se produit

HdrEntity.getDtlEntity().clear();
HdrEntity.getDtlEntity().addAll(saveDtlList);
HdRepository.save(HdrEntity);

référence

HibernateException - A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance
http://cristian.sulea.net/blog.php?p=2014-06-28-hibernate-exception-a-collection-with-cascade-all-delete-orphan-was-no-longer-referenced-by-the-owning-entity-instance


5.2. Accès à la base de données (édition JPA) 5.2.2.11. Mise en œuvre du processus de suppression d'entités https://terasolunaorg.github.io/guideline/public_review/ArchitectureInDetail/DataAccessJpa.html#id38


J'ai cherché JPA http://juzow.hatenablog.com/entry/20121017/1350480972

Recommended Posts

Comment supprimer / mettre à jour le champ de liste de OneToMany
Comment trier une liste de SelectItems
[Java] Supprimer les éléments de la liste
Comment ajouter la fonction de suppression
Comment afficher le champ de sélection de time_select toutes les 30 minutes
[Rails] Comment afficher une liste de messages par catégorie
Comment déterminer le nombre de parallèles
Comment trouver la cause de l'erreur Ruby
Personnalisez la répartition du contenu de Recyclerview
Comment obtenir le jour d'aujourd'hui
[Pour les débutants] Comment implémenter la fonction de suppression
Comment effacer la base de données lors de la recréation de l'application
Sortie de la façon d'utiliser la méthode slice
Comment afficher le résultat du remplissage du formulaire
[Java] Comment obtenir l'URL de la source de transition
Comment écrire Scala du point de vue de Java
[Java] Comment obtenir la valeur maximale de HashMap
[Rails] Comment changer le nom de colonne de la table
[Android] Comment obtenir la langue de réglage du terminal
[Rails] Comment obtenir le contenu des paramètres forts
Comment juger le clic de n'importe quelle zone de l'image
Comment télécharger une ancienne version d'Apache Tomcat
[Swift] Comment obtenir l'ID de document Firebase
Comment supprimer une nomenclature (UTF-8)
Comment mettre à jour avec activerecord-import
La suppression OneToMany de JPA devient une mise à jour
Comment connecter les chaînes de la liste séparées par des virgules
Supprimer tout le contenu de la page de liste [Ruby on Rails]
Comment obtenir les informations les plus longues de Twitter à partir du 12/12/2016
Comment modifier la valeur de réglage de Springboot Hikari CP
[Ruby] Comment récupérer le contenu du double hachage
Comment ajouter des éléments sans spécifier la longueur du tableau
Comment résoudre les problèmes causés par les trois files d'attente de blocage de Java
Comment se moquer de certaines méthodes de la classe testée
Comment dériver le dernier jour du mois en Java
Comment modifier le contenu du fichier jar sans décompresser
Comment vérifier l'extension et la taille des fichiers téléchargés
[jsoup] Comment obtenir la totalité de la documentation
Comment utiliser la méthode link_to
[Swift] Comment modifier dynamiquement la hauteur de la barre d'outils sur le clavier
Comment utiliser la méthode include?
Comment utiliser la méthode form_with
[Rails] Comment obtenir l'URL de la source de transition et la rediriger
Comment trouver l'angle moyen
[Swift5] Comment obtenir un tableau et un ensemble de différences entre les tableaux
Comment définir l'adresse IP et le nom d'hôte de CentOS8
Comment utiliser la classe wrapper
Comment afficher 0 sur le côté gauche de la valeur d'entrée standard
Comment utiliser setDefaultCloseOperation () de JFrame
[Rails / Heroku / MySQL] Comment réinitialiser la base de données de l'application Rails sur Heroku