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为啥要做这么强的参数类型和实体属性类型的匹配,欢迎大神解答