hibernate里面的类型问题
hibernate里面一个类型错误的异常:
pojo类:
public class Items {
private Integer id;
private String title;
private String intro;
private Date enterTime;
private Date startTime;
private Date endTime;
private Short state;
public get....
public set....
}
Items.hbm.xml文件:(是我手动输入的)
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<!--
Created by the Middlegen Hibernate plugin 2.1
http://boss.bekk.no/boss/middlegen/
http://www.hibernate.org/
-->
<class name="com.pojo.Items" table="items" dynamic-update="true">
<id name="id" type="java.lang.Integer" column="id">
<generator class="uuid.hex" />
</id>
<property name="title" type="java.lang.String" column="title" />
<property name="intro" type="java.lang.String" column="intro" />
<property name="enterTime" type="java.util.Date" column="enterTime" />
<property name="startTime" type="java.util.Date" column="startTime" />
<property name="endTime" type="java.util.Date" column="endTime" />
<property name="state" type="java.lang.Short" column="state" />
<!-- Associations -->
</class>
</hibernate-mapping>
myhibernate.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.url">
jdbc:mysql://localhost:3306/mydb
</property>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="hibernate.connection.username">
root
</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="show_sql">
true
</property>
<property name="hibernate.connection.pool_size">
2
</property>
<mapping resource="com/pojo/Items.hbm.xml"/>
<!-- <mapping resource="cn/hxex/message/model1/Message.hbm.xml"/>-->
</session-factory>
</hibernate-configuration>
操作的类:
public class ItemsOperate {
private Session session = null;
public ItemsOperate(){
File file = new File("mydbhibernate.cfg.xml");
if (file.exists()) {
Configuration config = new Configuration().configure(file);
@SuppressWarnings("deprecation")
SessionFactory factory = config.buildSessionFactory();
this.session = factory.openSession();
} else {
System.out.println("error");
System.exit(0);
}
}
public void insert(Items item){
session.getTransaction().begin();
this.session.save(item);
session.getTransaction().commit();
session.close();
}
//other methods......
public static void main(String[] args) {
// TODO Auto-generated method stub
Items item = new Items();
item.setId(1);//就是执行这个的时候出现异常
item.setTitle("title");
item.setIntro("introduce");
item.setEnterTime(new Date());
item.setStartTime(new Date());
item.setEndTime(new Date());
item.setState((short) 1);
System.out.println(item);
ItemsOperate oper = new ItemsOperate();
oper.insert(item);
}
}
问题就是,在执行insert这个方法的时候,报异常了:
2012-11-18 9:29:24 org.hibernate.property.BasicPropertyAccessor$BasicSetter set
ERROR: HHH000091: Expected type: java.lang.Integer, actual value: java.lang.String
Exception in thread "main" org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.pojo.Items.id
at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:119)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.setIdentifier(AbstractEntityTuplizer.java:381)
at org.hibernate.persister.entity.AbstractEntityPersister.setIdentifier(AbstractEntityPersister.java:4430)
at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:183)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:136)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:204)
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:189)
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:753)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:745)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:741)
at com.firsthibernate.ItemsOperate.insert(ItemsOperate.java:36)
at com.firsthibernate.ItemsOperate.main(ItemsOperate.java:76)
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:65)
看异常说明是类型错误,但是我所有的设置根本就没有把id设成String 的地方呀??为什么会报这种错?请高手指教
我只有最后20分了 希望不要因为分少而不想指点一二