6

मैं एक Maven परियोजना बनाया है और कहा Spring4, Hibernate4 pom.xml के माध्यम से libs मैं अपने डेटाबेस PostgreSQLमें बनाया के साथ अपने वेब एप्लिकेशन लिंक करने का प्रयास हूँ , लेकिन जब मैं अपाचे बिल्ला में अपने प्रोजेक्ट प्रकाशित 7 निम्नलिखित अपवाद तब होता है:java.lang.IllegalArgumentException: नहीं PersistenceProvider EntityManagerFactory विन्यास में निर्दिष्ट

org.springframework.beans.factory.BeanCreationException: त्रुटि नाम 'ईएमएफ' के साथ सेम बनाने ServletContext संसाधनमें परिभाषित किया गया 63,210 [/WEB-INF/applicationContext.xml]: init विधि की प्रार्थना किए जाने पर विफल रही है; नेस्टेड अपवाद java.lang.IllegalArgumentException है: नहीं PersistenceProvider EntityManagerFactory विन्यास, में निर्दिष्ट और चुने हुए PersistenceUnitInfo एक प्रदाता वर्ग के नाम को निर्दिष्ट नहीं करता या तो org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java पर : 1553) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:539 पर) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:475 पर) org.springframework.be पर ans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:304) org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:228) पर org.springframework.beans.factory पर .support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:300) org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:195) पर org.springframework.context.support.AbstractApplicationContext.getBean पर (सार APAplicationContext.java:973) org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:750) org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:482) org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext (ContextLoader.java:403) पर पर org.springframework.web पर .context.ContextLoader.initWebApplicationContext (ContextLoader.java:306) org.springframework.web.context.ContextLoaderListener.contextInitialized (ContextLoaderListener.java:106) पर org.apache.catalina.core.StandardContext.listenerStart पर (StandardContext जावा: 4994) org.apache.catalina.core.StandardContext.startInternal (StandardContext.java:5492 पर) org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:150) org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1575) पर org.apache पर पर 0cजावा java.lang: java.lang.Thread.run (अज्ञात स्रोत) पर .util.concurrent.ThreadPoolExecutor $ Worker.run (अज्ञात स्रोत) की वजह से।IllegalArgumentException: नहीं PersistenceProvider EntityManagerFactory विन्यास में निर्दिष्ट, और org.springframework.orm पर एक प्रदाता वर्ग के नाम या तो org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory (LocalContainerEntityManagerFactoryBean.java:318) में निर्दिष्ट नहीं करता PersistenceUnitInfo चुना .jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet (AbstractEntityManagerFactoryBean.java:318) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1612) पर org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory पर .initializeBean (AbstractAutowire CapableBeanFactory.java:1549) ... 21 अधिक

यहाँ मेरी applicationContext.xml है:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:jdbc="http://www.springframework.org/schema/jdbc" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> 


    <context:component-scan base-package="com.medsoft.stadto"> 
     <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> 
    </context:component-scan> 

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="org.postgresql.Driver" /> 
     <property name="url" value="jdbc:postgresql://localhost:1993/Posts" /> 
     <property name="username" value="postgres" /> 
     <property name="password" value="123" /> 
    </bean> 

    <bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="emf"> 
     <property name="packagesToScan" value="com.medsoft.stadto.entity" /> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="jpaProperties"> 
      <props> 
       <prop key="hibernate.show_sql">true</prop> 
       <prop key="hibernate.hbm2dll.auto">create</prop> 
      </props> 
     </property> 
    </bean> 

    <tx:annotation-driven transaction-manager="txManager" /> 
    <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
     <property name="dataSource" ref="dataSource" /> 
    </bean> 

</beans> 

उत्तर

11

बदलें emf सेम विन्यास और जोड़ने के लिए एक नया सेम jpaVendorAdapter कहा जाता है:

<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="emf"> 
    <property name="packagesToScan" value="com.medsoft.stadto.entity" /> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/> 
    <property name="persistenceUnitName" value="stadto"/> 
    <property name="jpaProperties"> 
    <props> 
     <prop key="hibernate.show_sql">true</prop> 
     <prop key="hibernate.hbm2ddl.auto">create</prop> 
    </props> 
    </property> 
</bean> 

<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
    <property name="showSql" value="true"/> 
    <property name="generateDdl" value="true"/> 
    <property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect"/> 
</bean> 

यह भी सुनिश्चित करें कि META-INF निर्देशिका में persistence.xml है:

<?xml version="1.0"?> 
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence 
    http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd" 
    version="2.1"> 
    <persistence-unit name="stadto"> 
    //No need to specify the provider as we already have specified JPA vendor in applicationContext.xml 
    </persistence-unit> 
</persistence> 
+0

क्या perssistence.xml का उपयोग किए बिना करने का कोई तरीका है? क्या आप समझा सकते हैं कि उसका विक्रेता एडाप्टर क्या करता है? – Jess

संबंधित मुद्दे