JPQL إلى محول SQL
سؤال
هل من الممكن الوصول إلى SQL الذي تم إنشاؤه بواسطة JPQL؟
أرغب في استخدام SQL لإنشاء طريقة عرض لاحقًا لأغطيتي.
أنا أستخدم السبات إذا كان الأمر مهمًا.
المحلول
لذلك تحتاج إلى كتابة تطبيق JPQL الخاص بك ثم :-) بعد كل شيء ، تحويل JPQL إلى SQL للحصول على مخزن بيانات RDBMS هو ما هو تطبيق JPQL. حظا طيبا وفقك الله!
من المؤكد أنه يمكنك الاستفادة من تنفيذ JPQL الحالي ، سواء كان السبات ، أو Eclipselink ، أو Datanucleus ... وبما أنها جميعًا مفتوحة المصدر ، يجب عليك الذهاب إلى قاعدة الشفرة الخاصة بهم.
نصائح أخرى
هل من الممكن الوصول إلى SQL الذي تم إنشاؤه بواسطة JPQL؟
يمكنك الوصول إلى SQL String
من بيات شتوى Interceptor
, أكثر دقة من الطريقة Interceptor.html#onPrepareStatement(java.lang.String)
onpreparestatement
String onpreparestatement(String sql) Called when sql string is being prepared. المعلمات: sql - sql to be prepared عائدات: original or modified sql
إذا قررت الذهاب بهذه الطريقة ، فإن الخيار الأفضل هو تمتد EmptyInterceptor
ولتجاوز الأساليب التي تريدها فقط.
يمكنك ربط اعتراضك باستخدام الإعلان التالي في الخاص بك persistence.xml
:
<properties>
<property name="hibernate.ejb.interceptor" value="com.acme.MyInterceptor"/>
</properties>
يمكنك تعيين ملف hibernate.show_sql
خاصية إلى صواب ، ثم سيتم عرض جميع SQL على وحدة التحكم.
<property name="hibernate.show_sql">true</property>