2012-03-03 150 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