spring中使用HibernateTemplate或HibernateDaoSupport报类型转换错误

Posted lxjshuju

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 });  
}  







以上是关于spring中使用HibernateTemplate或HibernateDaoSupport报类型转换错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring MVC 中使用 Spring 的 DomainClassConverter 的问题

Spring中事务的使用抽象机制及模拟Spring事务实现

spring工具类中注入使用bean

在 Spring 3.1.0 中使用 Spring Data JPA

如何在 Spring webflux 应用程序中使用 Spring WebSessionIdResolver 和 Spring Security 5?

Spring Boot 中使用 Spring Task 实现定时任务