2017-02-28 3 views
0

Ich muss etwas falsch gemacht haben. Ich schaue seit Stunden, aber ich kann mein Problem nicht finden. Ich versuche, @PersistenceContext für meinen entityManager zu verwenden, aber alles, was ich bekomme, ist eine NullPointerException.Hibernate: nullPointerException auf meinem EntityManager mit @PersistenceContext

Hier ist meine Klasse und die Methode, wo ich den Fehler:

@Repository 
public class ApplicationDao extends Dao 
{ 
    @PersistenceContext 
    private EntityManager entityManager; 

    [...] 

    public ArrayList<Application> getListApplication() { 

     Session session = entityManager.unwrap(Session.class); 

     [...] 

    } 

    [...] 
} 

Vielleicht ist es Konfiguration meines Frühlings ist, weil ich seit langer Zeit diesen Fehler bekam, wenn ich mein Projekt laden, aber es verursacht nie ein Problem

SEVERE: Spring context lookup failed, skipping spring component provider initialization. 

Meine Konfigurationsdateien:

src/main/resources/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:tx="http://www.springframework.org/schema/tx" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd 
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx.xsd"> 

    <tx:annotation-driven /> 

    <context:component-scan base-package="com.calamar.beans" /> 

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
    destroy-method="close"> 
    <property name="driverClassName" value="org.postgresql.Driver" /> 
    <property name="url" value="url" /> 
    <property name="username" value="calamar" /> 
    <property name="password" value="calamar" /> 
    </bean> 

    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> 

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="persistenceUnitName" value="calamar" /> 
    <property name="dataSource" ref="dataSource" /> 
    </bean> 

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
    </bean> 


</beans> 

src/main/resources/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="calamar" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <class>com.calamar.beans.Application</class> 
     <class>com.calamar.beans.Derogation</class> 
     <class>com.calamar.beans.DerogationFille</class> 
     <class>com.calamar.beans.DerogationAutre</class> 
     <class>com.calamar.beans.DerogationLinux</class> 
     <class>com.calamar.beans.DerogationOracle</class> 
     <class>com.calamar.beans.MatriculeUser</class> 
     <properties> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> 
      <property name="hibernate.id.new_generator_mappings" value="false"/> 
      <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/> 
      <property name="hibernate.connection.url" value="myUrl"/> 
      <property name="hibernate.connection.username" value="myUsername"/> 
      <property name="hibernate.connection.password" value="myPassword"/> 
      <property name="hibernate.default_schema" value="calamarantoine"/> 

      <!-- Permet de reduire le temps de lancement de entityManagerFactory --> 
      <property name="hibernate.temp.use_jdbc_metadata_defaults" value="false" /> 

     </properties> 


    </persistence-unit> 
</persistence> 

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>/*Company group id*/</groupId> 
    <artifactId>calamar</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>calamar Maven Webapp</name> 
    <url>http://maven.apache.org</url> 


    <parent> 
     //Company parent group 
    </parent> 


    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <!-- Import dependency management from Spring Boot --> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-parent</artifactId> 
       <version>1.4.2.RELEASE</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 


    <dependencies> 

     <!-- Jsp : Jstl --> 
     <dependency> 
      <groupId>jstl</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 

     <!-- Servlet api --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.1.0</version> 
     </dependency> 

     <!-- Spring boot web--> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <!-- Spring boot test--> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <!-- Spring boot jpa --> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <!-- Spring jersey --> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-jersey</artifactId> 
     </dependency> 

     <!-- PostgreSQL & Oracle --> 
     <dependency> 
      <groupId>postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <version>9.1-901.jdbc4</version> 
     </dependency> 
     <dependency> 
      <groupId>com.oracle</groupId> 
      <artifactId>ojdbc14</artifactId> 
      <version>10.2.0.3.0</version> 
     </dependency> 

     <!-- Log4j --> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 

     <!-- Gson --> 
     <dependency> 
      <groupId>com.google.code.gson</groupId> 
      <artifactId>gson</artifactId> 
      <version>2.3.1</version> 
     </dependency> 

     <!-- company dependencies --> 

    </dependencies> 

    <build> 
     <finalName>calamar</finalName> 
     <plugins> 
      <!-- Maven compiler with java 1.8 --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>Calamar</display-name> 
    <display-name>Calamar</display-name> 
    <filter> 
     //Company filter 
    </filter> 
    <filter-mapping> 
     //[...] 
    </filter-mapping> 

    <listener> 
     <listener-class> 
      org.springframework.web.context.request.RequestContextListener 
     </listener-class> 
    </listener> 

    //Servlets 
</web-app> 

Vielen Dank für die Zeit nehmen, mir zu helfen.

+0

Können Sie Ihre Konfiguration hinzufügen? – niekname

+0

Ich habe meine Konfigurationsdateien dem Beitrag hinzugefügt. (Sorry, wenn ich lange antworten wollte) –

Antwort

0

Wie Sie durch den Fehler sehen können, ist das Problem mit Spring-Konfiguration, nicht Winterschlaf.

+0

Ich habe meine Konfigurationsdateien zum ersten Post hinzugefügt, damit Sie mir helfen können, herauszufinden, warum ich diesen Fehler bekommen habe. (Sorry, wenn ich lange antworten wollte) –

+0

Ich würde vorschlagen, von einer XML-Konfiguration zu einer Java-Konfiguration zu wechseln. Ihre Konfiguration sieht gut aus, aber sie könnte einen Fehler enthalten, der bei Verwendung von XML schwieriger zu debuggen ist. Wenn Sie zu Java wechseln können, finden Sie schneller das Problem. Prost –

+0

Nur wechseln applicationContext.xml und beibehalten web.xml persistence.xml und pom.xml das gleiche? –

0

Unten Konfiguration funktioniert für mich. Kannst du das überprüfen. Der Persistenzkontext wird aus irgendeinem Grund nicht in unseren Fall eingefügt.

<tx:annotation-driven transaction-manager="transactionManager"/>     
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"/> 

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="myDs"/>  
</bean> 

<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
    <property name="showSql" value="true"/> 
    <property name="generateDdl" value="true"/> 
    <property name="database" value="ORACLE"/> 

</bean> 

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="dataSource" ref="myDs"/> 
    <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/> 
    <!-- spring based scanning for entity classes--> 
    <property name="packagesToScan" value="com.vimal.ecommerce.domain"/> 
</bean> 
Verwandte Themen