2015-09-05 46 views
1

我想爲hibernate編寫一個簡單的代碼。我正在使用SQL Server 2012作爲數據庫。Hiibernate:java.lang.ClassCastException:java.lang.String不能轉換爲java.lang.Integer

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer 
at org.hibernate.type.descriptor.java.IntegerTypeDescriptor.unwrap(IntegerTypeDescriptor.java:36) 
at org.hibernate.type.descriptor.sql.IntegerTypeDescriptor$1.doBind(IntegerTypeDescriptor.java:64) 
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:90) 
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:282) 
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:277) 
at org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(AbstractSingleColumnStandardBasicType.java:56) 
at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2843) 
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3121) 
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3587) 
at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:103) 
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:453) 
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:345) 
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:350) 
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56) 
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1218) 
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:421) 
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101) 
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:177) 
at com.samples.test.HibernateUtil.main(HibernateUtil.java:28) 

2015年9月5日下午七時四十零分59秒org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl釋放 信息:HHH000010:在釋放我運行應用程序時遇到以下錯誤批量它仍然包含了JDBC聲明

這是我的僱員實體類

package com.samples.hibernate; 

public class Employee { 

    private int ID; 
    private String name; 

    public int getID() { 
     return ID; 
    } 
    public void setID(int iD) { 
     ID = iD; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 

} 

這裏是我的代碼,我正在與數據庫進行通信。

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Configuration configuration = new Configuration().configure(); 
    StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); 
    SessionFactory factory = configuration.buildSessionFactory(builder.build()); 
    Session session = null; 
    try 
    { 
     session = factory.openSession(); 
     Employee employee = new Employee(); 
     employee.setID(3); 
     employee.setName("Venkatesh"); 

     session.beginTransaction(); 
     session.save(employee); 
     session.getTransaction().commit(); 


    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    finally 
    { 
     session.close(); 
    } 
} 

班員工的ID爲整數,姓名爲String。請幫我解決一下這個。我是休眠和嘗試學習的新手。先謝謝你。

+1

你可以發佈你的'員工'實體類嗎? – dazito

+0

@dazito我現在已經包含了我的Employee類。謝謝 – Venky

+1

因爲你使用了XML配置,你能添加嗎?我的猜測是你的數據庫最初有變量名稱的字符串值。嘗試添加「Create」 - >「 create-drop」的hbm2ddl屬性並刷新您的表以查看問題是否仍然存在。 – OneRaynyDay

回答

0

解決了。我重新創建了.hbm.xml文件。也許它將int作爲數據類型的名稱。

相關問題