مرحبًا ، كما أفهم ، باتباع jpa ، هناك طريقة واحدة فقط لإزالة الكيان المنفصل:
factory.withTransaction((session, transaction) ->
session.merge(sampleEntity).invokeUni(session::remove)
).await().indefinitely();
كل شيء على ما يرام ، ولكن إذا كان الأمر يتعلق بالأداء ، فإن عملية الدمج تستغرق وقتًا طويلاً ويمكن أن تسبب مشاكل حقيقية في الأداء. على سبيل المثال ، وفقًا لقياسات الوقت غير الدقيقة ، تستغرق إزالة 5000 عنصر حوالي 4 ثوانٍ ، في حالة السبات يستغرق 50 مللي ثانية.
لقد قرأت للتو عن طريقة جديدة تسمى session.getReference
والتي تُرجع المثيل الدائم لكيان معين. هل من الممكن السماح باستخدامه مقابل session.remove
؟
لقد قرأت للتو عن طريقة جديدة تسمى
session.getReference
والتي تُرجع المثيل الدائم لكيان معين. هل من الممكن السماح باستخدامه مقابلsession.remove
؟
آه ، نقطة جيدة ، بالتأكيد يجب أن تكون قادرًا على القيام بذلك. لقد نجحت في تحقيق النجاح في # 360.
ومع ذلك ، أريدك أن تفهم أنه لا توجد طريقة للحصول على عنصر remove()
بدون جلبه أولاً. هذا لأن remove()
يحتوي على دلالات مثل الحذف المتتالي ، وإزالة المجموعة التي تعتمد على وجود حالة الكيان في الجلسة.
إذا كنت بحاجة ماسة إلى أن تكون قادرًا على حذف كيان دون جلبه ، فيجب عليك استخدام StatelessSession.delete()
أو استعلام HQL delete
.
شكراً لـ @ Xset-s PS للإبلاغ عن هذا ، لقد كان بمثابة إشراف كبير من جانبي
لا توجد مشكلة ، شكرًا لاستجابتك التفصيلية حول إزالة العملية ولإصلاح سريع للغاية. أقوم بإجراء تجارب الآن وإعادة كتابة تطبيقي من جانب الخادم باستخدام مكتبتك الجديدة الرائعة ، لذلك من السهل بالنسبة لي التعرف على بعض المشكلات الصعبة ، والتي يمكن التقاطها فقط (أو باستخدام عدد كبير من الاختبارات 😄)