spring中使用HibernateTemplate或HibernateDaoSupport报类型转换异常
spring中使用HibernateTemplate或HibernateDaoSupport报类型转换错误
使用spring的HibernateDaoSupport的时候,报错
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at org.hibernate.type.IntegerType.set(IntegerType.java:64)
at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:154)
at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:136)
实体类如下
public class User { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
dao层代码如下
public void select(String id) { List result = this.getHibernateTemplate().find("from User where id=?", new Object[] { id }); }
错误原因是:实体类中User类的id属性是Integer类型的,但是传递的查询条件id是String类型的。将string改成int类型,错误解决
public void select(int id) { List result = this.getHibernateTemplate().find("from User where id=?", new Object[] { id }); }
不知道hibernate为啥要做这么强的参数类型和实体属性类型的匹配,欢迎大神解答