2012-03-03 152 views
1

我做了一個小例子程序中插入數據使用Java Hibernate的MySQL數據庫表。每一件事情都很好&我得到的結果休眠錯誤

「INFO:架構更新完成 休眠:插入項目(itemcode,itemdiscription,ITEMPRICE,的itemId)值 BUILD SUCCESSFUL(總時間(,,,????) :2秒)」

我的映射文件&配置文件都OK。 但是,當我在命令提示符中運行查詢以獲取更新的值時,它不會顯示我的java pojo類輸入的值。 這是爲什麼? 請考慮我爲此使用了netbeans 7.1。

映射文件

<?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="firsthibernetapp.Item" table="items"> 
       <id name="iid" type="int" column="itemId" > 
       <generator class="assigned"/> 
       </id> 
       <property name="icode"> 
        <column name="itemcode"/> 
       </property> 
       <property name="idiscription"> 
        <column name="itemdiscription"/> 
       </property> 
       <property name="iprice"> 
        <column name="itemprice"/> 
       </property> 
      </class> 
</hibernate-mapping> 

hibernet.cfg.xml文件:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD  3.0//EN" "http://hibernate.sourceforge.net/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  /combo</property> 
    <property name="hibernate.connection.username">root</property> 
    <property name="hibernate.connection.password">********</property> 
    <property name="hibernate.connection.pool_size">10</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="current_session_context_class">thread</property> 
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 
    <property name="show_sql">true</property> 
    <property name="hibernate.hbm2ddl.auto">update</property> 
    <mapping resource="hibernate.hbm.xml"/> 
    </session-factory> 
    </hibernate-configuration> 

代碼:

package firsthibernetapp; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 

public class FirstHibernetApp { 

public static void main(String[] args) { 
    Session session = null; 
    try{ 
     SessionFactory sessionFactory = 
       new Configuration().configure().buildSessionFactory(); 
     session =sessionFactory.openSession(); 
     Item item = new Item(); 
     System.out.println("Inserting Record"); 
     item.setIid(5); 
     item.setIcode("FX00010"); 
     item.setIdiscription("Apple"); 
     item.setIprice(10); 
     session.save(item); 
     System.out.println("Done"); 
    }catch(Exception e){ 
     System.out.println(e.getMessage()); 
    } 
    finally{ 
     session.flush(); 
     session.close(); 
    } 
    } 
} 

`

+0

「命令行」是什麼意思?您正在使用哪個查詢?什麼是'select * from items'顯示? – Matteo 2012-03-03 16:16:56

+0

我輸入了「SELECT * FROM items;」 (項目是我的數據庫表)。這隻顯示使用命令行輸入的數據。 – Grant 2012-03-03 16:17:43

+1

你必須顯示(相關)的代碼...看起來你沒有正確提交您的交易 – home 2012-03-03 16:21:52

回答

2
add these lines.. 
session =sessionFactory.openSession(); 
Transaction tx = session.beginTransaction(); //new line 
Item item = new Item(); 



session.save(item); 
System.out.println("Done"); 
tx.commit(); //new line 
}catch(Exception e){ 
... 
+0

現在,它顯示了這個錯誤::::: ...... 「org.hibernate作爲.transaction.JDBCTransaction不能被轉換到的javax.transaction.Transaction」 – Grant 2012-03-03 16:46:12

+0

除了標識及價格我的數據庫變量VARCHAR秒,但在我的java類,我宣佈作爲私人的String。 – Grant 2012-03-03 16:49:16

+0

你應該導入org.hibernate。*;在你的程序或者是非常肯定的是,你可以改變線 org.hibernate.Transaction TX = session.beginTransaction(); – Sekhar 2012-03-03 17:28:55