2013-03-06 238 views
0

我使用Hibernate和Spring 3.0我試圖將值保存到數據庫,但是當我看到一個控制檯唯一的選擇查詢顯示插入或更新不顯示並保存不起作用春季和休眠保存不工作

我創建了一個SessionFactory的bean,並將其注入到默認地將Impl

<bean id="GetStartedDAOBean" class="com.sample.dao.impl.GetStartedDAOImpl" > 
      <property name="sessionfactory" ref="sessionFactory"> 
      </property> 
    </bean 

<bean id="GetStartedActionBean" class="com.sample.action.GetStartedAction"> 
     <property name="getStartedDAOImpl" ref="GetStartedDAOBean"></property> 
     <property name="industryDAOImpl" ref="IndustryDAOBean"></property> 
     <property name="stateDAOImpl" ref="stateDAOBean"></property> 
    </bean> 

在IMPL我有

private SessionFactory sessionfactory; 

     public void setSessionfactory(SessionFactory sessionfactory) { 
     this.sessionfactory = sessionfactory; 
     } 


    public void save(Customer customer)throws IllegalStateException,SystemException{ 

     try { 
      sessionfactory.openSession().saveOrUpdate(customer); 
     } 
     catch(Exception e){ 
      e.printStackTrace();  
     } 

    } 

當調試存在SessionFactory的價值,但它不保存任何值。也不顯示任何插入的查詢。沒有錯誤。

任何人都可以幫助我嗎?

回答

6

你打開你的會話(內存)和保存的東西到它,但會在數據庫中保存,只有當你flush()。做一個

Session session = sessionfactory.openSession(); 
session.saveOrUpdate(customer); 
session.flush(); 

另一種方式是提交事務,從而Hibernate會自動調用flush()

4

@Transactional嘗試在方法,並添加以下到您的XML:

<tx:annotation-driven/> 
+0

我在哪裏給@Transactional – jackyesind 2013-03-06 12:24:37

+0

你在哪裏調用save()方法 – PSR 2013-03-06 12:25:08

+0

你檢查了這個 – PSR 2013-03-06 12:26:36

-1

@Transaction你已經給服務類的方法和<tx:annotation-driven/>你必須給applicaiton-context.xml文件。

因此,當任何一個調用服務類的方法時,交易將在春季開始,它將處理提交和回滾。

+0

這與PSR的答案相同。 – 2013-03-06 14:20:34

+0

是正確的,但在那另外我提到@Transactionl必須穿上服務類。 – 2013-03-06 14:23:09

+0

它應該是「@Transactional」和「application-context」。另外,你只是重複了PSR的答案。 – fivedogit 2015-05-28 15:44:45