<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"><beans>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property><property name="url">
<value>jdbc:mysql://localhost:3306/springmvc</value>
</property><property name="username">
<value>root</value>
</property><property name="password">
<value>123123</value>
</property></bean><bean id="jpaDialect" class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"></bean><bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="persistenceUnitName" value="springmvcTest" /><property name="jpaVendorAdapter" ref="jpaVendorAdapter"></property>
</bean><bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="database" value="MYSQL"></property>
<property name="showSql" value="true"></property>
<property name="generateDdl" value="false"></property>
<property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"></property>
</bean><bean id="userDAO" class="com.xupt.dao.impl.UserDAOImpl">
<property name="entityManagerFactory" ref="entityManagerFactory"></property>
</bean><bean id="userService" class="com.xupt.service.impl.UserServiceImpl">
<property name="userDAO" ref="userDAO"></property>
</bean><bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean></beans>大侠们,这是我们applicationContext.xml文件,在UserDAO中调用this.getJpaTemplate().persist(user)方法不会出错,但是无法持久化到数据库,检查数据库链接没有问题。这是DAO
package com.xupt.dao.impl;import org.springframework.orm.jpa.support.JpaDaoSupport;import com.xupt.bean.User;
import com.xupt.dao.UserDAO;public class UserDAOImpl extends JpaDaoSupport implements UserDAO {@Override
public void saveUser(User user) {System.out.println(this.getJpaTemplate().getEntityManager());this.getJpaTemplate().persist(user);
}
}刚刚接触SpringMVC整合JPA,各位大侠们帮帮忙啊!!!

解决方案 »

  1.   

    嘿嘿。记得使用spring的AOP在配置文件中设置你的方法需要提交明白,否则是持久化不到数据库的
      

  2.   

    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />       
     
    <!-- 声明式事务帮助业务逻辑实现数据库CUD -->
    <!-- 添加事务 -->
    <bean id="myTxManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    <!-- 将通知给这个切点 advice-ref表示事务通知,pointcut-ref表示谁需要这个事务-->
    <aop:config>
    <aop:pointcut id="bizServiceMethods"
    expression="execution(* involar.*.dao.impl.*.*(..))" />
    <aop:advisor advice-ref="txAdvice"
    pointcut-ref="bizServiceMethods" />
    </aop:config>
    <tx:advice id="txAdvice" transaction-manager="myTxManager">
    <tx:attributes>
    <tx:method name="create*" propagation="REQUIRED" />
    <tx:method name="update*" propagation="REQUIRED" />
    <tx:method name="execSql" propagation="REQUIRED" />
    <tx:method name="delete*" propagation="REQUIRED" />
    <tx:method name="read*" propagation="SUPPORTS"
    read-only="true" />
    </tx:attributes>
    </tx:advice>


    </bean>只有添加的事物才可以OK呵呵
      

  3.   


    而且JpaTemplate的EntityManager是null