سؤال

عندما قدمت Google خدمة جديدة - Google Cloud Sql ، قررت نقل تطبيق الويب gwt + jpa + hibernate + spring + maven إلى gae. لذلك لدي مشكلة أثناء بدء تطبيقي محليًا وعلى gae. لدي خطأ في إنشاء حبة داو بسبب هذا: Genacodicetagpre

لذلك بدا لي أنني كنت أستخدم jpa-1.0 بدلاً من jpa-2.0 مع السبات (لأن jpa 1.0 يفتقر إلى الطريقة:

getValidationMode ()

لقد راجعت libs ... كل شيء على ما يرام - باستخدام jpa 2.0 مع hibernate-jpa-2.0-api.jar. لكني وجدت برومليم: عندما أستخدم الكود الخاص بي بدون gae وأستخدم db آخر ، كل شيء على ما يرام. الحقيقة هي أن appengine sdk يتضمن JPA الخاص به والإصدار 1.0 (اقتباس من هنا استخدام JPA مع App Engine )

تم تضمين JARs JPA ومخزن البيانات في App Engine Java SDK. يمكنك العثور عليها في الدليل appengine-java-sdk / lib / user / orm /. انسخ JARs إلى دليل war / WEB-INF / lib / الخاص بتطبيقك.

عند بدء تشغيل أحد التطبيقات ، فإنه يستخدم jpa 1.0 (بدون طريقة getValidationMode () في javax.persistance.spi.PersistanceUnitInfo) من appengine sdk بدلاً من بلدي.

إذًا ، كيف يمكنني التغلب على هذه المشكلة لجعل تطبيقي يستخدم البرطمانات الصحيحة؟ هنا ملف persistent.xml الخاص بي أيضًا:

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

المحلول

هناك مشكلة في دعم Hibernate JPA ، لأنها تستخدم مواصفات JPA 2.0.لكن محرك تطبيقات Google يدعم فقط مواصفات JPA1.0.لدي أيضًا نفس المشكلة ، حيث استخدمت دعم Spring Hibernate (بدلاً من Hibernate JPA).

بالنسبة لمشكلتك ، أعتقد أيضًا أنه من الأفضل استخدام دعم Spring Hibernate.

نصائح أخرى

يجب استخدام إصدار قديم من وضع السبات (متوافق مع jpa 1).يفرض GAE هذه الأشياء عليك.في الواقع لم أكن أعرف أنه يدعم JPA - اعتقدت أنه يتم دعم JDO فقط.

لا أفهم سبب تحديد اسم المستخدم وكلمة المرور في ملف persistent.xml.

أعتقد أنك لست بحاجة إلى بيانات الاعتماد هذه لأن وصول التطبيق إلى قاعدة البيانات مقيد من إدارة وحدة التحكم في Google SQL Cloud ، حيث تحدد معرفات التطبيق المسموح بها.

إذا كنت تستخدم الكسوف ، فأعتقد أن مشروع GAE لجافا يقوم فقط بنسخ برطمانات GAE إلى WEB-INF \ lib وإزالة برطمانات JPA من DataNucleus و Geronimo ونسخ جرة Hibernate. لم أحاول هذا أبدًا على ما أظن.

حظ سعيد

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