不将数据保存到数据库中。 Hibernate和Spring连接

问题描述:

我连接到我的应用程序使用此设置与Hibernate数据库:不将数据保存到数据库中。 Hibernate和Spring连接

hibernateContext.xml

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 

    <bean id="hibernateUserDao" class="org.springframework.web.basepackage.HibernateUserDao"> 
     <property name="hibernateTemplate" ref="hibernateTemplate" /> 
    </bean> 

这是hibernate.cfg.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/fullproject</property> 
     <property name="hibernate.connection.username">root</property> 
     <property name="hibernate.connection.password">admin</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
     <property name="hibernate.hbm2ddl.auto">update</property> 
     <property name="hibernate.show_sql">true</property> 
     <mapping resource="user.hbm.xml" /> 
    </session-factory> 
</hibernate-configuration> 

这是user.hbm.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
    <class name="org.springframework.web.basepackage.User" table="users"> 
     <id name="id" column="id"> 
      <generator class="native" /> 
     </id> 
     <property name="login" column="login"/> 
     <property name="password" column="password" /> 
     <property name="email" column="email" /> 
    </class> 
</hibernate-mapping> 

这是我的用户实体

public class User { 

    private int id; 
    private String login; 
    private String password; 
    private String email; 

    public User(){ 

    } 

    public User(String login, String password, String email){ 
     this.login = login; 
     this.password = password; 
     this.email = email; 
    } 

    public int getId(){ 
     return id; 
    } 
    public String getLogin(){ 
     return login; 
    } 
    public String getPassword(){ 
     return password; 
    } 
    public String getEmail(){ 
     return email; 
    } 

    public void setId(int id){ 
     this.id = id; 
    } 
    public void setLogin(String login){ 
     this.login = login; 
    } 
    public void setPassword(String password){ 
     this.password = password; 
    } 
    public void setEmail(String email){ 
     this.email = email; 
    } 
} 

当我尝试保存数据库以这种方式“hibernateTemplate.save(用户)”我赶在控制台此行 “休眠:插入到用户(登录名,密码,电子邮件)值(?,?,?)“并且更改不保存到数据库中。我尝试在user.hbn.xml更改生成器类为“增量”,因为我的数据库表中的ID具有AUTO INCREMENT参数,但它不起作用。

+0

一些资源,你在看正确的服务器和数据库'本地主机:3306/fullproject'? – gerrytan 2014-11-06 22:12:52

+0

获取插入语句并将其复制到您的SQL控制台中。看看它的行为。你可能有微小的变化/差异,阻止实际提交到数据库中。 – Aeseir 2014-11-06 22:47:56

+0

服务器和数据库是正确的 – user3491167 2014-11-07 06:56:21

听起来像你的事务更新后没有得到提交。当你调用HibernateTemplate.update()时,它只会更新你的持久化,但实际上并没有提交这些更改。请记住,在继续之前总是先完成交易并保存。

这里是休眠会话和交易,可以帮助您与您当前的问题12

+0

之前,来自hibernate.cfg.xml的设置位于hibernateContext.xml(在帖子的顶部)作为DataSource bean,一切正常。但是当我移动这个设置来分离hibernate.cfg.xml然后我看到这个问题 – user3491167 2014-11-07 07:03:33

+0

当你使用数据源bean时你是否也使用spring hibernateTemplate,或者你刚刚注入会话工厂并创建与Spring会话?你还试过template.getSessionFactory()。getCurrentSession()。getTransaction()。commit()? – 2014-11-10 00:52:29