سؤال

أين هي الأماكن الأكثر شيوعًا حيث حصلت على org.hibernate.LazyInitializationException في Grails ، ما هو السبب وكيف قمت بحلها؟

أعتقد أن هذا الاستثناء واحد يأتي كثيرًا للمبتدئين ، لذلك إذا قدمت المزيد من الأمثلة ، فسيكون ذلك رائعًا.

هل كانت مفيدة؟

المحلول

لنأخذ مثالًا:

class Book {
  String title
  Author author
}

class Author {
  ...
}

Book book = Book.get(1)

كما نعلم ، فإن وضع الجلب الافتراضي كسول في فصول المجال. بالنظر إلى المثال أعلاه ، قل أننا نحصل على كائن الكتاب ، ثم يتم إرفاق كائن الكتاب بكائن جلسة السبات ، أي ذاكرة التخزين المؤقت للمستوى الأول تلقائيًا. وبعد أن يتم فصل كائن المجال عن كائن الجلسة ثم نحاول إحضار Book.author ، في هذه اللحظة ، يثير استثناء التهيئة البطيئة.

لذا فإن الحل هو ، إما أن يكون وضع الجلب متحمسًا أو إرفاق كائن الكتاب الخاص بك إلى جلسة السبات باستخدام الرمز الوارد أدناه:

if(!book.isAttached()){
     book.attach()
}

الوصف الوارد أعلاه هو واحد من السيناريو. يمكن أن يكون هناك الكثير. أطلب من الآخرين من فضلك المشاركة.

نصائح أخرى

حصلت على واحدة لأنني كنت أتحقق مما إذا كان لدى المستخدم إذن للقيام ببعض الإجراءات مع JSecurity/Shiro في خدمة لم تكن معاملات. في النهاية ، اضطررت للتو إلى ضبط الخدمة كمعاملات للتخلص من الاستثناء.

مزيد من المعلومات هنا: http://www.nable.com/jsecurity-lazyinitializationexception-in-default-dbrealm.ispermitted٪28٪29-td24939803.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top