سؤال

موجز

أحاول تشغيل تطبيق ويب جافا جبا 2.0 مثال.ال مثال على التطبيق وقد كتب لتشغيل في Glassfish, ، باستخدام EclipseLink كمزود جبا.وأود أن تحويله إلى تشغيل في TomEE مع OpenJPA كما مزود جبا ، ولكن لا أستطيع أي دروس مفصلة للحصول على وتشغيلها مع OpenJPA.

المشكلة

أواجه مشكلة في التحويل persistence.xml للعمل مع OpenJPA بدلا من EclipseLink.وبشكل أكثر تحديدا ، فإن المعطى persistence.xml لا يحدد:

  • Entity الطبقات.هل هذه ضرورية?
  • مزود جبا المطلوب.سوف الافتراضي الحاوية إلى شيء?
  • سائق جدبك.كيف يمكنني تحديد" في الذاكرة " ديسيبل (فقط لأغراض الاختبار الأولي)?

أيضا:

التفاصيل

أدناه هو إكليبسلينك persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="order" transaction-type="JTA">
        <jta-data-source>jdbc/__default</jta-data-source>
        <properties>
            <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
            <property name="eclipselink.ddl-generation.output-mode"
                value="both" />
        </properties>
    </persistence-unit>
</persistence>

لدي ما يلي Entity الفصول الدراسية:

  • order.entity.LineItem
  • order.entity.LineItemKey
  • order.entity.Order
  • order.entity.Part
  • order.entity.PartKey
  • order.entity.Vendor
  • order.entity.VendorPart

السؤال

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

المحلول

إذا قمت بإضافة openjpa.jdbc.SynchronizeMappings الخاصية كما هو مبين أدناه أوبنجبا سوف لصناعة السيارات في إنشاء جميع الجداول الخاصة بك ، كل ما تبذلونه من المفاتيح الأساسية وجميع المفاتيح الخارجية بالضبط لتتناسب مع الكائنات الخاصة بك

<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>

بدلا من ذلك ، يمكنك استخدام إكليبسلينك في تومي فقط عن طريق إضافة الجرار إكليبسلينك إلى <CATALINA_HOME>/lib/

الرجوع هنا ل خصائص المثابرة المشتركة

نصائح أخرى

قيود المفتاح الخارجي

السطر التالي لا يخلق مفاتيح خارجية:

<property name="openjpa.jdbc.SynchronizeMappings" 
          value="buildSchema(ForeignKeys=true)"/>

يقوم فقط بإنشاء مخطط وحذف محتوى قاعدة البيانات.

ولكن إذا كنت تريد إنشاء مفاتيح خارجية ، فاستخدم الأسطر التالية:

<property name="openjpa.jdbc.SynchronizeMappings" 
          value="buildSchema(foreignKeys=true,schemaAction='dropDB,add')"/>
<property name="openjpa.jdbc.SchemaFactory" 
          value="native(foreignKeys=true)" />
<property name="openjpa.jdbc.MappingDefaults" 
          value="ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict"/>

انظر سكل ولدت

بطريقة أخرى ، إذا كنت تريد أن ترى إخراج سكل:

<property name="openjpa.Log" 
          value="DefaultLevel=TRACE,SQL=TRACE" />

ملاحظة:من أجل رؤية الإخراج الذي تم إنشاؤه في وحدة تحكم تومي ، تحتاج إلى تغيير مستوى السجل في الملف loggin.properties مع openjpa.level = FINEST


شاهد المزيد في http://openjpa.apache.org/faq.html

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