2015-09-05 123 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作为数据类型的名称。

相关问题