spring2.5.6 hibernate3.3.2 annotation无法持久化entity

请教一下各位:

试了一下spring2.5.6 MVC + hibernate3.3.2的annotation组合,在持久化实体时,没有报错,日志也显示调用到了相应的操作,但是数据库中却没有数据...,不知道是哪里有问题 ,代码如下:

applicationContext.xml


<context:property-placeholder location="classpath:jdbc.properties"/>
&lt;bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"&gt;
    &lt;property name="driverClass" value="${jdbc.driverClassName}"/&gt;
    &lt;property name="jdbcUrl" value="${jdbc.url}"/&gt;
    &lt;property name="user" value="${jdbc.username}"/&gt;
    &lt;property name="password" value="${jdbc.password}"/&gt;

    &lt;property name="minPoolSize"&gt;&lt;value&gt;10&lt;/value&gt;&lt;/property&gt;
    &lt;property name="maxPoolSize"&gt;&lt;value&gt;100&lt;/value&gt;&lt;/property&gt;
    &lt;property name="maxIdleTime"&gt;&lt;value&gt;1800&lt;/value&gt;&lt;/property&gt;
    &lt;property name="acquireIncrement"&gt;&lt;value&gt;2&lt;/value&gt;&lt;/property&gt;
    &lt;property name="maxStatements"&gt;&lt;value&gt;100&lt;/value&gt;&lt;/property&gt;
    &lt;property name="initialPoolSize"&gt;&lt;value&gt;10&lt;/value&gt;&lt;/property&gt;   
    &lt;property name="idleConnectionTestPeriod"&gt;&lt;value&gt;1800&lt;/value&gt;&lt;/property&gt;
    &lt;property name="acquireRetryAttempts"&gt;&lt;value&gt;30&lt;/value&gt;&lt;/property&gt;
    &lt;property name="breakAfterAcquireFailure"&gt;&lt;value&gt;true&lt;/value&gt;&lt;/property&gt;
    &lt;property name="testConnectionOnCheckout"&gt;&lt;value&gt;false&lt;/value&gt;&lt;/property&gt;
&lt;/bean&gt;

&lt;bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"&gt;
    &lt;property name="dataSource" ref="dataSource"&gt;&lt;/property&gt;

    &lt;property name="annotatedClasses"&gt;
      &lt;list&gt;
        &lt;value&gt;com.zy.sa.test.entity.Userinfo&lt;/value&gt;
      &lt;/list&gt;
    &lt;/property&gt;

    &lt;!-- &lt;property name="packagesToScan" value="com.zy.sa.test.entity.*" /&gt; --&gt;

    &lt;property name="hibernateProperties"&gt;
        &lt;props&gt;
            &lt;prop key="hibernate.connection.provider_class"&gt;com.mchange.v2.c3p0.ComboPooledDataSource&lt;/prop&gt;
            &lt;prop key="hibernate.dialect"&gt;${hibernate_dialect}&lt;/prop&gt;
            &lt;prop key="hibernate.show_sql"&gt;${hibernate_show_sql}&lt;/prop&gt;
            &lt;prop key="hibernate.format_sql"&gt;true&lt;/prop&gt;
            &lt;prop key="hibernate.transcation.flush_before_completion"&gt;true&lt;/prop&gt;
            &lt;prop key="hibernate.generate_statistics"&gt;true&lt;/prop&gt;
            &lt;prop key="hibernate.connection.release_mode"&gt;auto&lt;/prop&gt;
            &lt;prop key="hibernate.autoReconnect"&gt;true&lt;/prop&gt;
            &lt;prop key="hibernate.bytecode.use_reflection_optimizer"&gt;true&lt;/prop&gt;
        &lt;/props&gt;
    &lt;/property&gt;
&lt;/bean&gt;

&lt;bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"
        p:sessionFactory-ref="sessionFactory"/&gt;

&lt;!-- 支持 @Transactional --&gt;  
&lt;tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" /&gt;



annomvc-servlet.xml
  <!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->
<context:component-scan base-package="com.zy.sa.test" />
&lt;context:annotation-config/&gt;

&lt;!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --&gt;
&lt;bean
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /&gt;

&lt;!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --&gt;
&lt;bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"
    p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" /&gt;</pre><br /><br /><strong>web.xml</strong><br /><br /><pre name="code" class="java">&lt;!--  Spring 服务层的配置文件 --&gt;
&lt;context-param&gt;
    &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;
    &lt;param-value&gt;/WEB-INF/applicationContext.xml&lt;/param-value&gt;
&lt;/context-param&gt;

&lt;!-- 日志配置 --&gt;
&lt;context-param&gt;
    &lt;param-name&gt;log4jConfigLocation&lt;/param-name&gt;
    &lt;param-value&gt;/WEF-INF/classes/log4j.properties&lt;/param-value&gt;
&lt;/context-param&gt;

&lt;!--  Spring 容器启动监听器 --&gt;
&lt;listener&gt;
    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;
&lt;/listener&gt;

&lt;!-- 要负责处理由JavaBeans Introspector的使用而引起的缓冲泄露 --&gt;  
&lt;listener&gt;  
    &lt;listener-class&gt;org.springframework.web.util.IntrospectorCleanupListener&lt;/listener-class&gt;  
&lt;/listener&gt;

&lt;!-- 编码 --&gt;  
&lt;filter&gt;   
    &lt;filter-name&gt;encodingFilter&lt;/filter-name&gt;  
    &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter&lt;/filter-class&gt;  
    &lt;init-param&gt;  
        &lt;param-name&gt;encoding&lt;/param-name&gt;  
        &lt;param-value&gt;UTF-8&lt;/param-value&gt;  
    &lt;/init-param&gt;  
    &lt;init-param&gt;  
        &lt;param-name&gt;forceEncoding&lt;/param-name&gt;  
        &lt;param-value&gt;true&lt;/param-value&gt;  
    &lt;/init-param&gt;  
&lt;/filter&gt;     

&lt;!-- Hibernate Open Session In View --&gt;
&lt;filter&gt;   
    &lt;filter-name&gt;hibernateFilter&lt;/filter-name&gt;  
    &lt;filter-class&gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&lt;/filter-class&gt;  
&lt;/filter&gt;

&lt;!-- Hibernate Open Session In View --&gt;  
&lt;filter-mapping&gt;    
    &lt;filter-name&gt;hibernateFilter&lt;/filter-name&gt;  
    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;     
&lt;/filter-mapping&gt;    

&lt;!-- 编码 --&gt;  
&lt;filter-mapping&gt;    
    &lt;filter-name&gt;encodingFilter&lt;/filter-name&gt;  
    &lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;     
&lt;/filter-mapping&gt;

&lt;!--  Spring MVC 的Servlet,它将加载WEB-INF/annomvc-servlet.xml 的配置文件,以启动Spring MVC模块--&gt;
&lt;servlet&gt;
    &lt;servlet-name&gt;annomvc&lt;/servlet-name&gt;
    &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;
    &lt;load-on-startup&gt;2&lt;/load-on-startup&gt;
&lt;/servlet&gt;

&lt;servlet-mapping&gt;
    &lt;servlet-name&gt;annomvc&lt;/servlet-name&gt;
    &lt;url-pattern&gt;*.do&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;

&lt;welcome-file-list&gt;
  &lt;welcome-file&gt;index.html&lt;/welcome-file&gt;
  &lt;welcome-file&gt;index.htm&lt;/welcome-file&gt;
  &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;
  &lt;welcome-file&gt;default.html&lt;/welcome-file&gt;
  &lt;welcome-file&gt;default.htm&lt;/welcome-file&gt;
  &lt;welcome-file&gt;default.jsp&lt;/welcome-file&gt;
&lt;/welcome-file-list&gt;

&lt;error-page&gt;
    &lt;exception-type&gt;java.lang.Exception&lt;/exception-type&gt;
    &lt;location&gt;/WEB-INF/common/uncaughtException.jsp&lt;/location&gt;
&lt;/error-page&gt;

&lt;error-page&gt;
    &lt;error-code&gt;403&lt;/error-code&gt;
    &lt;location&gt;/WEB-INF/common/403.jsp&lt;/location&gt;
&lt;/error-page&gt;

&lt;error-page&gt;
    &lt;error-code&gt;404&lt;/error-code&gt;
    &lt;location&gt;/WEB-INF/common/404.jsp&lt;/location&gt;
&lt;/error-page&gt;

&lt;error-page&gt;
    &lt;error-code&gt;500&lt;/error-code&gt;
    &lt;location&gt;/WEB-INF/common/500.jsp&lt;/location&gt;
&lt;/error-page&gt;</pre><br /><br /><strong>MyController.java</strong><br /><br /><pre name="code" class="java">@Controller

@RequestMapping("/my.do")
public class MyController {

@Autowired
private UserinfoService userinfoService;

@RequestMapping
public String my(Userinfo user) {
    System.out.println("my.do");
    System.out.println("userinfoService: " + userinfoService);
    System.out.println(user);
    userinfoService.createUserInfo(user);
    return "userinfo_create";
}

}




UserinfoServiceImpl.java

@Service
@Transactional
public class UserinfoServiceImpl implements UserinfoService {
@Autowired
private UserinfoDao userinfoDao;

@Override
@Transactional(readOnly=false, propagation=Propagation.REQUIRED)
public void createUserInfo(Userinfo user) {
    Userinfo userinfo = new Userinfo();
    userinfo.setId("ww");
    userinfo.setUserName("wangwu");
    userinfo.setPassword("111");
    userinfo.setEmail("ww@aaa.com");
    userinfoDao.save(userinfo);
    userinfoDao.getSession().save(userinfo);
}

@Override
@Transactional(readOnly=true)
public List&lt;Userinfo&gt; getAllUser() {
    return userinfoDao.getAll();
}</pre><br /><br /><strong>UserinfoDao.java</strong><br /><pre name="code" class="java">@Repository

public class UserinfoDao extends HibernateDao<Userinfo, String> {

@Override
@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
    logger.info("sessionFactory: " + sessionFactory);
    super.setSessionFactory(sessionFactory);
}

}



HibernateDao.java


public Session getSession() {
return sessionFactory.getCurrentSession();
}
public void save(final T entity) {
    Assert.notNull(entity, "entity不能为空");
    getSession().saveOrUpdate(entity);
    logger.debug("save entity: {}", entity);
}



通过:http://localhost:8080/springannotation/my.do?id=lisi&userName=ls&password=111&email=ls@aaa.com访问,控制台打印出了实体信息,但数据库无数据,不知道问题出在哪里?
问题补充
没人帮忙看一下啊

2个回答

我以前也碰到过这个问题,这应该是spring的一个bug,详细的原因和解决办法见http://www.iteye.com/problems/2646

[code="java"] public void createUserInfo(Userinfo user) {

。。。。。。。。
// 添加代码,显式提交事务
} [/code]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐