2014-02-28 44 views
0

休眠query.executeUpdate()不工作..休眠query.executeUpdate()無法正常工作

這裏是代碼更新

public static void expDue(){ 
    Session session=HibernateUtil.getSessionFactory().openSession(); 
    java.util.Date utilDate=new java.util.Date(); 
    java.sql.Date sqldate=new java.sql.Date(utilDate.getTime()); 
    Format formatter = new SimpleDateFormat("yyyy-MM-dd"); 
    String a= formatter.format(sqldate);  
    boolean b=false; 
    if(b==false){ 
    Query query = session.createQuery(" update Issue set dueStatus = 'true' where returnDate='"+a+"'"); 
    int result = query.executeUpdate(); 
    System.out.println(query.executeUpdate()+"Rows affected: " + result); 
    b=true; 
    } 

這裏的印刷結果顯示正確的值,

但數據庫沒有變化。

和休眠代碼

<hibernate-configuration> 
    <session-factory> 
    <!-- SQL dialect --> 
    <property name="dialect">org.hibernate.dialect.HSQLDialect</property> 

    <!-- Database connection settings --> 
    <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property> 
     <property name="hibernate.connection.url">jdbc:hsqldb:db/hsql/library;shutdown=true</property> 
     <property name="hibernate.connection.username">sa</property> 
     <property name="hibernate.connection.password">sa</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property> 


    <!-- JDBC connection pool (use the built-in one) --> 
    <property name="connection.pool_size">1</property> 

    <!-- Enable Hibernate's automatic session context management --> 
    <property name="current_session_context_class">thread</property> 

    <!-- Disable the second-level cache --> 
    <property 
    name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 

    <!-- disable batching so HSQLDB will propagate errors correctly. --> 
    <property name="jdbc.batch_size">0</property> 

    <!-- Echo all executed SQL to stdout --> 
    <property name="show_sql">true</property> 

    <!-- List all the mapping documents we're using --> 
    <mapping class="com.habitz.librarymanagement.domain.Admin" /> 
     <mapping class="com.librarymanagement.domain.Book" /> 
     <mapping class="com.librarymanagement.domain.Category" /> 
     <mapping class="com.librarymanagement.domain.Group" /> 
     <mapping class="com.librarymanagement.domain.Issue" /> 
     <mapping class="com.librarymanagement.domain.Member" /> 
    </session-factory> 
</hibernate-configuration> 

在控制檯印刷值結果顯示正確的值。但數據庫顯示沒有變化..

如果你知道這裏這個請sahre答案..

UPDATE

Transaction tx = null; 
     tx = session.beginTransaction(); 
      Query query = session 
        .createQuery(" update Issue set dueStatus = 'true' where returnDate='" 
          + a + "'"); 

      int result = query.executeUpdate(); 
      System.out.println(query.executeUpdate() + "Rows affected: " 
        + result); 
      tx.commit(); 
+0

你不會在數據庫中提交事務。 – user1516873

+0

@ user1516873像這樣的事務提交 Transaction tx = null; tx = session.beginTransaction(); tx.commit(); –

+0

@ user1516873我更新,但它仍然沒有工作... –

回答

4
Transaction tx = null; 
    tx = session.beginTransaction(); 
    boolean b = false; 
    if (b == false) { 
     Query query = session 
       .createQuery(" update Issue set dueStatus = 'true' where returnDate='" 
         + a + "'"); 
    query.executeUpdate(); 
    tx.commit(); 

你已經忘記提交事務前執行更新。

+0

抱歉,這是我的錯誤。我更新它並且沒有更改 –

+0

可能會有一些緩存問題,請在提交事務後嘗試關閉會話。 –

+0

肯定這不是問題,但爲了防止出現一些問題,請從System.out.println()中刪除第二個executeUpdate()。因爲它執行兩次。 –