2012-03-03 3 views
1

は、私は、JavaにHibernateを使用してMySQLデータベーステーブルにデータを挿入するための小さなプログラム例をしました。スキーマの更新を完全 休止状態::(????、、、)のアイテム(itemcode、itemdiscription、itemprice、のitemId) BUILD SUCCESSFUL値(合計時間に挿入するすべてのものは、私は結果Hibernateのエラー

」INFOを得た&細かい行ってきました: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

+0

「SELECT * FROM items;」とタイプしました。 (itemsは私のデータベーステーブルです)。これは、コマンドラインで入力したデータのみを表示します。 – Grant

+1

あなたが(関連する)コードを表示しなければなりません...あなたは正しく、私はいくつかのコード – home

答えて

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

を掲載している – Grant

+0

同上&価格を除いて私のデータベース変数は、varchar型のですが、私のJavaクラスでは、私は民間のStringとしてそれらを宣言しました。 – Grant

+0

あなたはorg.hibernate。*をインポートする必要があります。あなたのプログラム内または非常に確かに、あなたは org.hibernate.Transaction TX = session.beginTransaction()にラインを変更することができます。 – Sekhar

関連する問題