كيفية إجبار السبات 3.3 أو 3.5 على استخدام CGLIB بدلاً من Javassist؟
سؤال
هل لا يزال من الممكن إجبار السبات 3.3 أو 3.5 على استخدام CGLIB بدلاً من Javassist؟ في ملف الخصائص ، قمت بتعيين
hibernate.bytecode.provider = cglib
لكن هذا لا يبدو أنه يفعل ذلك. أي أفكار؟
المحلول
يبدو أن بعض الناس لم يقرأوا إجابتي بشكل صحيح ، لذا سأعيد صياغة: hibernate.properties
يبدو صحيحًا ، يتم تعريف العقار جيدًا ، يجب أن يعمل. لذلك ، آسف على السؤال ولكن هل CGLIB على classpath؟
تحديث: اختبرت للتو ويعمل بالنسبة لي. هنا هو الإخراج الذي أحصل عليه في وقت التهيئة:
15 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.0.SP1 18 [main] INFO org.hibernate.cfg.Environment - loaded properties from resource hibernate.properties: {hibernate.bytecode.use_reflection_optimizer=false, hibernate.bytecode.provider=cglib} 20 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : cglib
ملاحظة: لاحظ ذلك تم إهمال دعم CGLIB في الآونة الأخيرة (هذا لا يعني أنك لن تكون قادرًا على استخدام CGLIB ولكن التكامل الذي لم يتم الحفاظ عليه بعد الآن).
نصائح أخرى
نعم ، ضع أيضا
hibernate.properties
في مجلد بعض المصدر وتذكر أن يكون لديك hibermate-cglib-repack في التبعيات:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-cglib-repack</artifactId>
<version>2.1_3</version>
</dependency>
تذكر أن مكتبة CGLIB لم يتم تطويرها لمدة 4 سنوات. يجب عليك أن تفعل كل شيء لجعل الكود الخاص بك يعمل مع Javassist ، والذي لا يزال يتم الحفاظ عليه بنشاط.