English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
هيكل قاعدة البيانات كالتالي
يحتوي strategy على مفاتيح أجنبيه member_id (مرتبط مع جدول member) ومفتاح أجنبي strategy_category (مرتبط مع جدول category) بينما يحتوي جدول member على مفتاح أجنبي position_id (مرتبط مع جدول positions)
إذا قام واجهة المستخدم الأمامية بالبحث مباشرة عن محتويات جدول strategy، فإن جملة HQL الخاصة بنا ستكون هكذا
String hql = "FromStrategywhereid=:id";
يظهر خطأ nosession في وحدة التحكم لأن Hibernate يقوم بشكل افتراضي بتحميل التزامن التلقائي فقط عند الحاجة إلى تحميل العناصر المرتبطة هنا في واجهة المستخدم الأمامية عند محاولة استخراج خصائص العناصر المرتبطة قد تم إغلاق الجلسة مما يؤدي إلى ظهور هذا الخطأ
إذن كيف يمكن حل هذه المشكلة?
يُنصح باستخدام طريقة leftjoinfetch للتحميل بدلاً من تغيير التحميل البطيء المحدد في التعليقات التوضيحية إلى التحميل العاجل لأن الكفاءة ستكون منخفضة
الجملة التالية
Strategystrategy=(Strategy)sessionFactoryUtil.getSession() .createQuery("FromStrategysleftjoinfetchs.strategyCategoryleftjoinfetchs.memberleftjoinfetchs.member.positionswheres.id=:id") .setInteger("id",id).uniqueResult();
هناك أمر يجب الانتباه إليه لأن الجدول member مرتبط أيضًا بجدول positions لذا يجب تحميله أيضًا. يجب أيضًا الانتباه إلى أن s.id يجب كتابته بهذه الطريقة لأن اسم مفتاح رئيسي كل جدول هو id و如果没有指定, لن يتمكن النظام من التعرف عليه
الخلاصة
هذا هو محتوى المقال الكامل حول كيفية التعامل مع مشكلة التحميل العاجل لـ hibernate (الارتباطات الخارجية المتعددة)، نأمل أن يكون هذا مفيدًا لكم. يمكن للزوار المهتمين الاستمرار في مراجعة مواضيع أخرى ذات صلة على هذا الموقع، ونرحب بالتعليقات التي تشير إلى أي نقاط ضعف. شكرًا لكم على دعمكم للموقع!
البيان: محتويات هذا المقال تم جمعها من الإنترنت، ويتمتع صاحب الحقوق الأصلية، ويتم توفير المحتوى من قبل مستخدمي الإنترنت الذين يقدمون إسهاماتهم بشكل تلقائي، ويتم توفير المحتوى على هذا الموقع دون امتلاك حقوق الملكية، ولا يتم تعديل المحتوى بشكل يدوي، ولا يتحمل هذا الموقع أي مسؤولية قانونية. إذا كنت قد وجدت محتوى يشتبه في حقوق النسخ، فلا تتردد في إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال # بـ @) لإبلاغنا، وقدم الدليل على الدليل، وإذا تم التحقق من ذلك، سيتم حذف المحتوى المشبوه في حقوق النسخ على الفور.