Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 21246|Yanıt: 0

[Kaynak] Aynı tanımlayıcı değerine sahip farklı bir nesne zaten ilişkilendirilmişti...

[Bağlantıyı kopyala]
Yayınlandı 1.07.2016 10:48:52 | | | |
Aynı tanımlayıcı değerine sahip farklı bir nesne zaten oturuma ilişkilendirilmişti: 398FDBBA-57b8-4d3d-B84B-4c0C0B497F02, varlığı: XXX



Bu hatayla toplamda iki kez karşılaştım ve hiç iyi bir çözüm bulamadım, bu hata ortaya çıktı

Nedeni muhtemelen iyi bilinir, çünkü kış uykusunda aynı oturumda iki aynı logo vardır

Ancak, farklı bir varlık ise, bu hata saveOrUpdate(object) işlemi çalıştırıldığında bildirilecektir.

Hehe, belki diyeceksin, söylediklerin söyledikleriyle söylemediklerin arasında fark yok, kabul ediyorum, hehe, detayları bilmiyorum

Bu hata neden oldu, yoksa uzun süre çözülemezdi, şimdi, geçici bir hata ver

Çözüm, benim gibi kök nedeni bulamayan insanlara uygulamaya devam edebilecekleri bir yol sunmak

(Tabii ki doğru, ama sebeple başlamaz)
    Aslında, bu sorunu çözmek çok basit, sadece session.clean() işlemini gerçekleştirin

Ama saveOrUpdate(object) işlemini temizlik işleminden sonra yaptınız, bu mümkün

"Aynı koleksiyonun iki temsili buldum", çok fazla bilgi aradım.

Bu makalenin en çok yardımcı olduğu iyi bir açıklama yok

http://opensource.atlassian.com/projects/hibernate/browse/HHH-509。

Son olarak, session.refresh (nesne) yöntemiyle çözülebilir, objektin olmaması durumunda

Veritabanında veri olan bir nesneyse, session.refresh(object) faktörünü kullanamazsınız

Yenilemek, oturumda nesne yoksa nesneyi hibernasyon oturumundan yeniden aktarmaktır

Bu nesne varsa, bir hata bildirilecektir, bu yüzden saveOrUpdate(object) kullanmadan önce değerlendirme yapmanız gerekir.

Kır

    Elbette, bu sorunun en kolay çözümü Hibernate ile gelen merge() özelliğini kullanmaktır.

yöntem. Ancak, sorunlarla karşılaştığımda, bu yazılımla birlikte gelen çok faydalı yöntemi kullandığımı her zaman hissediyorum

(saveOrUpdate(), save(), update()) ile karşılaştırıldığında çok rahatsız edici hissettiriyor.
    Daha sonra bu hatanın genellikle bir-çok eşlemede ve çok-çok eşlemede de görüldüğünü fark ettim, lütfen burada olun

Bir-çok ve çok-çok eşlemesi kullanırken dikkatli olun
Uyku Uykusu Sorun Giderme ve Yönetimi
1、aynı tanımlayıcı değerine sahip farklı bir nesne zaten oturumla ilişkilendirilmişti。
Hata nedeni: Uyku uykusunda aynı oturumda iki aynı kimlik vardır ama farklı varlıklardır.
Çözüm 1: session.clean()
Not: Temizleme işleminden sonra saveOrUpdate(object) gibi veri durumunu değiştirmek için işlemler yaparsanız, "Aynı koleksiyonun iki temsili bulundu" istisnası alabilirsiniz.
Çözüm 2: session.refresh(object)
Not: Nesne veritabanında veri olan bir nesne değilse, session.refresh(object) kullanamazsınız çünkü yöntem nesneyi hibernate oturumundan geri almaktır; oturumda herhangi bir nesne yoksa hata bildirilir, bu yüzden saveOrUpdate(object) kullanmadan önce değerlendirme yapmanız gerekir.
Çözüm 3: session.merge(object)
Not: Hibernate'in kendi yöntemi önerilir.
2、Aynı koleksiyonun iki temsili bulundu
Hata nedeni: Bkz. 1.
Çözüm: session.merge(object)
Yukarıdaki iki anomali genellikle bir-çok eşlemede ve çok-çok eşlemede ortaya çıkar




Hata nedenleri:

Efsane:Yeni bir kullanıcı nesnesi oluşturup kullanıcı kimliğine göre kullanıcı bilgilerini alıp bu nesneye atamanız, böylece aynı tanımlayıcı değerine sahip farklı bir nesne zaten oturum hatasına ilişkilendirilmiş olurdu!!





Önceki:C# 4.0'da dinamikin kullanımı
Önümüzdeki:c# nesnelerinin sığ kopyalanmasını klonla
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com