2013-04-25 3 views
0

Я получаю исключение Null Pointer при попытке сохранить и учетную запись. Оказывается, entityManager имеет значение null, но я не могу понять, почему. Вот соответствующий код, любые идеи? Я попытался сделатьNull Pointer Exception Entity Manager

package com.test.bank2.account; 

import org.springframework.transaction.annotation.Transactional; 

import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 

@Transactional 
public class AccountRepositoryImpl implements AccountRepository{ 
    @PersistenceContext(unitName = "entityManagerFactory") 
    private EntityManager entityManager; 


    @Override 
    public void save(Account account) { 

     entityManager.persist(account); 
    } 
} 

и конфигурации:

<?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:jpa="http://www.springframework.org/schema/data/jpa" 
     xmlns:jdbc="http://www.springframework.org/schema/jdbc" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd 
    http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 


    <jdbc:embedded-database id="dataSource"> 
     <jdbc:script location="classpath:setup.sql"/> 
    </jdbc:embedded-database> 

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="packagesToScan" value="com.test.bank2" /> 
     <property name="jpaPropertyMap"> 
      <map> 
       <entry key="eclipselink.weaving" value="false"/> 
       <entry key="eclipselink.ddl-generation" value="create-tables"/> 
       <entry key="eclipselink.target-database" value="org.eclipse.persistence.platform.database.HSQLPlatform"/> 
      </map> 
     </property> 
     <property name="jpaVendorAdapter"> 
      <bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter" > 
       <property name="databasePlatform" value="org.eclipse.persistence.platform.database.HSQLPlatform" /> 
       <property name="generateDdl" value="true" /> 
      </bean> 
     </property>   
    </bean> 

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


    <tx:annotation-driven transaction-manager="transactionManager"/> 

</beans> 
+0

Это может помочь вам: http://stackoverflow.com/questions/4708035/persistencecontext-entitymanager-injection-nullpointerexception – acdcjunior

ответ

3

Добавьте следующую конфигурацию Spring.

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

что работал , благодаря! –

0

вы можете попытаться установить свой EntityManager в «новой EntityManager()», прежде чем пытаться использовать его в любом месте, возможно, сразу же после того, как вам объявите его или когда вы его объявите.

+3

Не используйте новое ключевое слово с весной, как общее правило – fpmoles