Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 21246|Απάντηση: 0

[Πηγή] Ένα διαφορετικό αντικείμενο με την ίδια τιμή αναγνωριστικού είχε ήδη συσχετιστεί με...

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 1/7/2016 10:48:52 π.μ. | | | |
ένα διαφορετικό αντικείμενο με την ίδια τιμή αναγνωριστικού είχε ήδη συσχετιστεί με τη συνεδρία: 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)
Οι παραπάνω δύο ανωμαλίες εμφανίζονται συχνά στην αντιστοίχιση ένα προς πολλά και στην αντιστοίχιση πολλά προς πολλά




Αιτίες σφάλματος:

Μύθος:Δεν μπορείτε να δημιουργήσετε ένα νέο αντικείμενο χρήστη και στη συνέχεια να λάβετε τις πληροφορίες χρήστη με βάση το αναγνωριστικό χρήστη και να τις αντιστοιχίσετε σε αυτό το αντικείμενο, έτσι ώστε ένα διαφορετικό αντικείμενο με την ίδια τιμή αναγνωριστικού να έχει ήδη συσχετιστεί με το σφάλμα περιόδου λειτουργίας!!





Προηγούμενος:Χρήση δυναμικού σε C# 4.0
Επόμενος:Κλωνοποίηση ρηχής αναπαραγωγής αντικειμένων c#
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com