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分了 希望不要因为分少而不想指点一二
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分了 希望不要因为分少而不想指点一二
...全文
相关推荐
解决Hibernate对于Date类型的数据返回结果中时分秒不对的问题
解决Hibernate对于Date类型的数据返回结果中时分秒不对的问题
hibernate映射Oracle中LONG类型
hibernate中使用自定义类型映射Oracle LONG类型
Hibernate的char问题.txt
Hibernate的char问题.txt
Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法
Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法
Hibernate使用——自定义数据类型
NULL 博文链接:https://gwoham-163-com.iteye.com/blog/1895101


