এই কনফিগারেশনে মূলত আমার কাছে কিছু অবজেক্ট রয়েছে (আসল ডেটা মডেলটি খানিকটা জটিল):
- বি এর সাথে এ-এর অনেকগুলি সম্পর্ক রয়েছে (বি আছে
inverse="true"
) - সি এর সাথে বি এর একাধিক এক সম্পর্ক রয়েছে (আমি
cascade
সেট করে রেখেছি"save-update"
) - সি এক ধরণের টাইপ / ক্যাটাগরি সারণী।
এছাড়াও, আমার সম্ভবত উল্লেখ করা উচিত যে প্রাথমিক কীগুলি সংরক্ষণের ডেটাবেস দ্বারা উত্পন্ন হয়।
আমার ডেটা দিয়ে আমি মাঝে মাঝে এমন সমস্যায় পড়ে যাই যেখানে A এর বি বিভিন্ন বি অবজেক্টের সেট থাকে এবং এই বি অবজেক্ট একই সি অবজেক্টকে বোঝায়।
আমি যখন কল session.saveOrUpdate(myAObject)
, আমি বলার অপেক্ষা রাখে না একটি হাইবারনেট ত্রুটি পাবেন: "a different object with the same identifier value was already associated with the session: C"
। আমি জানি হাইবারনেট একই সেশনে দু'বার একই বস্তু সন্নিবেশ / আপডেট / মুছতে পারে না, তবে এর কোনও উপায় আছে কি? এটি এমন পরিস্থিতির অস্বাভাবিক হবে বলে মনে হয় না।
এই সমস্যা সম্পর্কে আমার গবেষণা চলাকালীন, আমি লোকেরা ব্যবহারের পরামর্শ দিতে দেখেছি session.merge()
, কিন্তু যখন আমি এটি করি তখন কোনও "বিবাদমান" বিষয়বস্তু ডাটাবেসে সমস্ত মান বাতিল করে রেখে ফাঁকা বস্তু হিসাবে .োকানো হয়। স্পষ্টত এটি আমরা চাই না।
[সম্পাদনা] অন্য একটি জিনিস আমি উল্লেখ করতে ভুলে গেছি তা হ'ল (আমার নিয়ন্ত্রণের বাইরে স্থাপত্যগত কারণে), প্রতিটি পড়া বা লেখার আলাদা সেশনে করা দরকার।