ένα διαφορετικό αντικείμενο με την ίδια τιμή αναγνωριστικού είχε ήδη συσχετιστεί με τη συνεδρία: 398fdbba-57b8-4d3d-b84b-4c0c0b497f02, της οντότητας: XXX
Αντιμετώπισα αυτό το σφάλμα δύο φορές συνολικά και δεν βρήκα ποτέ μια καλή λύση και παρουσιάστηκε αυτό το σφάλμα
Ο λόγος είναι μάλλον γνωστός, γιατί στην αδρανοποίηση υπάρχουν δύο πανομοιότυπα λογότυπα στην ίδια συνεδρία
Ωστόσο, εάν πρόκειται για διαφορετική οντότητα, αυτό το σφάλμα θα αναφερθεί κατά την εκτέλεση της λειτουργίας saveOrUpdate(object).
Χεχε, ίσως πεις, δεν υπάρχει διαφορά ανάμεσα σε αυτό που λες και σε αυτό που δεν λες, το παραδέχομαι, χεχε, δεν ξέρω τις λεπτομέρειες
Γιατί συνέβη αυτό το σφάλμα, διαφορετικά δεν θα είχε λυθεί για μεγάλο χρονικό διάστημα, τώρα, δώστε ένα προσωρινό
Η λύση είναι να δώσουμε σε ανθρώπους σαν εμένα που δεν έχουν τρόπο να βρουν τη βασική αιτία έναν τρόπο να συνεχίσουν να εφαρμόζουν
(Φυσικά και είναι σωστό, αλλά δεν ξεκινά από την αιτία) Στην πραγματικότητα, είναι πολύ απλό να λύσετε αυτό το πρόβλημα, απλώς εκτελέστε τη λειτουργία session.clean().
Αλλά εκτελέσατε τη λειτουργία saveOrUpdate(object) μετά την καθαρή λειτουργία, η οποία είναι δυνατή
«Βρήκα δύο αναπαραστάσεις της ίδιας συλλογής», έψαξα για πολλές πληροφορίες.
Δεν υπάρχει καλή εξήγηση, από την οποία αυτό το άρθρο βοηθά περισσότερο
http://opensource.atlassian.com/projects/hibernate/browse/HHH-509。
Τέλος, μπορεί να λυθεί με τη μέθοδο session.refresh(object), σημειώστε ότι όταν το αντικείμενο δεν είναι
Εάν πρόκειται για αντικείμενο με δεδομένα στη βάση δεδομένων, δεν μπορείτε να χρησιμοποιήσετε τον παράγοντα session.refresh(object)
Για ανανέωση είναι η ανάκτηση του αντικειμένου από την περίοδο αδρανοποίησης, εάν δεν υπάρχει αντικείμενο στη συνεδρία
Εάν υπάρχει αυτό το αντικείμενο, θα αναφερθεί ένα σφάλμα, επομένως πρέπει να κρίνετε πριν χρησιμοποιήσετε το saveOrUpdate(object).
Σπάστε το
Φυσικά, η πιο εύκολη λύση σε αυτό το πρόβλημα είναι να χρησιμοποιήσετε τη merge() που συνοδεύει το Hibernate.
μέθοδος. Ωστόσο, πάντα νιώθω ότι όταν αντιμετωπίζω προβλήματα, χρησιμοποιώ την πολύ χρήσιμη μέθοδο που συνοδεύει αυτό το λογισμικό
(σε σύγκριση με το saveOrUpdate(), save(), update()) είναι πολύ δυσάρεστο. Αργότερα διαπίστωσα επίσης ότι αυτό το σφάλμα εμφανίζεται συχνά στην αντιστοίχιση ένα προς πολλά και στην αντιστοίχιση πολλά προς πολλά, παρακαλώ να είστε εδώ
Να είστε προσεκτικοί όταν χρησιμοποιείτε την αντιστοίχιση ένα-προς-πολλά και πολλά-προς-πολλά Αντιμετώπιση προβλημάτων και χειρισμός αδρανοποίησης 1、Ένα διαφορετικό αντικείμενο με την ίδια τιμή αναγνωριστικού είχε ήδη συσχετιστεί με τη συνεδρία。 Αιτία σφάλματος: Στην αδρανοποίηση, υπάρχουν δύο πανομοιότυπες ταυτότητες στην ίδια περίοδο λειτουργίας, αλλά διαφορετικές οντότητες. Λύση 1: session.clean() ΥΓ: Εάν εκτελέσετε λειτουργίες για να αλλάξετε την κατάσταση δεδομένων, όπως saveOrUpdate(object) μετά την καθαρή λειτουργία, ενδέχεται να λάβετε μια εξαίρεση "Βρέθηκαν δύο αναπαραστάσεις της ίδιας συλλογής". Λύση 2: session.refresh(object) ΥΓ: Όταν το αντικείμενο δεν είναι αντικείμενο με δεδομένα στη βάση δεδομένων, δεν μπορείτε να χρησιμοποιήσετε το session.refresh(object) επειδή η μέθοδος είναι να ανακτήσετε ξανά το αντικείμενο από την περίοδο αδρανοποίησης, εάν δεν υπάρχει αντικείμενο στη συνεδρία, θα αναφερθεί ένα σφάλμα, επομένως πρέπει να κρίνετε πριν χρησιμοποιήσετε το saveOrUpdate(object). Λύση 3: session.merge(object) ΥΓ: Συνιστάται η μέθοδος του Hibernate. 2, Βρέθηκαν δύο αναπαραστάσεις της ίδιας συλλογής Αιτία σφάλματος: Δείτε 1. Λύση: session.merge(object) Οι παραπάνω δύο ανωμαλίες εμφανίζονται συχνά στην αντιστοίχιση ένα προς πολλά και στην αντιστοίχιση πολλά προς πολλά
Αιτίες σφάλματος:
Μύθος:Δεν μπορείτε να δημιουργήσετε ένα νέο αντικείμενο χρήστη και στη συνέχεια να λάβετε τις πληροφορίες χρήστη με βάση το αναγνωριστικό χρήστη και να τις αντιστοιχίσετε σε αυτό το αντικείμενο, έτσι ώστε ένα διαφορετικό αντικείμενο με την ίδια τιμή αναγνωριστικού να έχει ήδη συσχετιστεί με το σφάλμα περιόδου λειτουργίας!!
|