سؤال

لدي إعداد مشروع حيث لدي وحدة نمطية موجودة في المجلد WEB-INF/lib الخاص بملف الحرب الأصلي.تحتوي هذه الوحدة على ملف الثبات xml والكيان الذي أحتاج إلى تحميله عند تحميل حاوية JPA أثناء بدء التشغيل.بطريقة ما أحتاج إلى دمج وحدات الثبات الخاصة بالحرب وجرة lib.إن استمرارية.xml الخاصة بحربي موجودة في WEB-INF/classes/META-INF ومن ثم فإنها ستأخذ WEB-INF/classes كجذر استمراري ولن تفهم الكيان من جرة lib الخاصة بي.لقد اكتشفت ذلك بالطريقة الصعبة.

لقد عثرت على العديد من الأشخاص الذين يقترحون حلولاً لهذه المشكلة

http://ancientprogramming.blogspot.com/2007/05/multiple-persistencexml-files-and.html واكتشفت أيضًا أن هناك مشروع Spring's Data-jpa الذي يحتوي على MergingPersistenceUnitManager والذي سيدمج تعريفات فئة الكيانات.

هنا هو التكوين الخاص بي

<bean id="pum" class="org.springframework.data.jpa.support.MergingPersistenceUnitManager">
  <property name="persistenceXmlLocations">
    <list>
     <value>classpath*:META-INF/persistence.xml</value>
    </list> 
  </property>
  <property name="defaultDataSource" ref="dataSource"></property>
</bean>


<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="persistenceUnitName" value="LineManagement" />
    <property name="persistenceUnitManager" ref="pum"></property>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="generateDdl" value="false" />
            <property name="showSql" value="false" />
            <property name="databasePlatform" ref="cpsHibernateDialectClassName" />
        </bean>
    </property>

الذي لا يعمل.يعطيني خطأ java.lang.NoSuchMethodError:org.springframework.data.jpa.support.MergingPersistenceUnitManager.getPersistenceUnitInfo(Ljava/lang/String;)Lorg/springframework/orm/jpa/persistenceunit/MutablePersistenceUnitInfo;

ليس لدي أدنى فكرة كيف يعطيني هذا الخطأ.من وجهة نظري، يقوم MergingPersistenceUnitManager بتوسيع DefaultPersistenceManager.الشيء الوحيد الذي أشك فيه هو أنه قد يكون هناك صراع.

وهنا تبعياتي.Spring-orm-3.0.2-RELEASE.jar وspring-data-jpa-1.0.3-RELEASE.jar.

يمكنني العودة إلى حل البرمجة القديم، لكن ألا يجب أن يعمل خارج الصندوق؟

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

المحلول

لديك إصدارات غير متطابقة من Spring-Orm وspring-data-jpa.بشكل عام، الإصدارات العشوائية ليست مضمونة للعب بشكل جيد معًا.

MutablePersistenceUnitInfo getPersistenceUnitInfo - الطريقة غائبة عن MergingPersistenceUnitManager (أو في الواقع من DefaultPersistenceUnitManager الفائقة) في الإصدار أو الإصدار 3.0.2.

من نفس الفئة في الإصدار 3.0.5 يمكنك العثور على هذه الطريقة: DefaultPersistenceUnitManager.java أيضًا مخضرم بوم بالنسبة إلى Spring-data-jpa-1.0.3 يسرد التبعية لـ Spring-Orm 3.0.5.لذا تم حل مشكلتك باستخدام الإصدار 3.0.5 من sprin-orm.

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