开发者

entitymanager is null on DAO class

开发者 https://www.devze.com 2023-03-15 18:55 出处:网络
I am trying to implement Spring MVC 3 +EclipseLink JPA 2 When I call saveUser for example it returns that

I am trying to implement Spring MVC 3 +EclipseLink JPA 2 When I call saveUser for example it returns that

NullPointerException, EntityManager is null

:

public class UserDAO {
  @PersistenceContext
  private EntityManager em;
    public void setEntityManager(EntityManager em) {
        this.em = em;
    }

     @Transactional
    public User saveUser(User user){
        return em.merge(user);
    }

My config is:

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

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
   开发者_如何学C <property name="persistenceUnitName" value="application" />
    <property name="jpaVendorAdapter">
        <bean
            class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter">
            <property name="showSql" value="true" />
            <property name="databasePlatform" value="org.eclipse.persistence.platform.database.MySQLPlatform" />

            <property name="generateDdl" value="false" />
        </bean>
    </property>
    <property name="loadTimeWeaver">
        <bean
            class="org.springframework.instrument.classloading.SimpleLoadTimeWeaver" />
    </property>
</bean>
<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="username" value=".." />
    <property name="password" value=".." />
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url"
        value="jdbc:mysql://..." />
</bean>

Also have

    <context:component-scan base-package="com.elasticbeanstalk.mypackage" />
<context:annotation-config />

It does initialize JPA during Tomcat startup. Why am I see NPE? Could I miss something?


If you instantiate the UserDAO manually, nothing will be injected by Spring. If the DAO is in a package which is under your base-package of <context:component-scan ../> then you can simply autowire it into your Controller. If not, either modify the base-package or also you can define the DAO in the appcontext manually, then you can autowire as well.

0

精彩评论

暂无评论...
验证码 换一张
取 消