2014-11-06 107 views
1

我連接到我的應用程序使用此設置與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

回答

0

聽起來像你的事務更新後沒有得到提交。當你調用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

相關問題