
整合SSH2时候,实现按Usernam查询时候出现了这个错误:org.hibernate.TypeMismatchException:
org.springframework.orm.hibernate3.HibernateSystemException:Providedidofthewrongtypef...
org.springframework.orm.hibernate3.HibernateSystemException:
Provided id of the wrong type for class com.demo.pojo.Userinfo. Expected:
class java.lang.Integer, got class java.lang.String;
nested exception is org.hibernate.TypeMismatchException: Provided id of the wrong type for class com.demo.pojo.Userinfo. Expected: class java.lang.Integer, got class java.lang.String
org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:679)
...........................................................................
org.hibernate.TypeMismatchException: Provided id of the wrong type for class com.demo.pojo.Userinfo. Expected: class java.lang.Integer, got class java.lang.String
产生错误的语句我也查到,但是就是不知怎么修改!
涉及的java类有:
Userinfo.java
useriinfoDAO.java
UserinfoDAOImpl.java
UserinfoService.java
UserinfoServiceImpl.java
LoginAction.java
错误产生就在UserinfoDAOImpl.java中的:
Userinfo userinfo =(Userinfo)this.getHibernateTemplate().get(Userinfo.class, username);
LoginAction.java调用:
Userinfo userinfo = this.userinfoService.login(username, password);
然后UserinfoServiceImpl.java 调用:
Userinfo userinfo = this.userinfoDAO.findUserinfoByName(username);
然后UserinfoDAOImpl.java有这个语句:
Userinfo userinfo =(Userinfo)this.getHibernateTemplate().get(Userinfo.class, username);
即:
@Override
public Userinfo findUserinfoByName(String username) throws Exception {
Userinfo userinfo =(Userinfo)this.getHibernateTemplate().get(Userinfo.class, username);
return userinfo;
}
就是那个语句,通过Hibernate取出来的数据类型都是String,但是Userinfo.java有
Integer id;
String username;
String password;
String role;
知道
Userinfo userinfo =(Userinfo)this.getHibernateTemplate().get(Userinfo.class, username);
期待的class类型为Integer:Expected: class java.lang.Integer
但是却得了String类型:got class java.lang.String
我接触这个时间不长,请问有什么方法可以解决这个问题呢?
问题解决了,PS一下吧,供参考
Userinfo userinfo =(Userinfo)this.getHibernateTemplate().get(Userinfo.class, username);
这个语句就错在get哪里,Hibernate一般是以Id查询,就是username哪里是Integer类型。如果想按照username查询,那么就修改成如下的:
String hql = "select userinfo from Userinfo userinfo where userinfo.username='"+username+"'";
List list =this.getHibernateTemplate().find(hql);
if(list.size()==0){//判断是否有查询结果
return null;
}else{
Userinfo userinfo=(Userinfo) list.get(0); //返回查询结果
return userinfo;
} 展开
Provided id of the wrong type for class com.demo.pojo.Userinfo. Expected:
class java.lang.Integer, got class java.lang.String;
nested exception is org.hibernate.TypeMismatchException: Provided id of the wrong type for class com.demo.pojo.Userinfo. Expected: class java.lang.Integer, got class java.lang.String
org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:679)
...........................................................................
org.hibernate.TypeMismatchException: Provided id of the wrong type for class com.demo.pojo.Userinfo. Expected: class java.lang.Integer, got class java.lang.String
产生错误的语句我也查到,但是就是不知怎么修改!
涉及的java类有:
Userinfo.java
useriinfoDAO.java
UserinfoDAOImpl.java
UserinfoService.java
UserinfoServiceImpl.java
LoginAction.java
错误产生就在UserinfoDAOImpl.java中的:
Userinfo userinfo =(Userinfo)this.getHibernateTemplate().get(Userinfo.class, username);
LoginAction.java调用:
Userinfo userinfo = this.userinfoService.login(username, password);
然后UserinfoServiceImpl.java 调用:
Userinfo userinfo = this.userinfoDAO.findUserinfoByName(username);
然后UserinfoDAOImpl.java有这个语句:
Userinfo userinfo =(Userinfo)this.getHibernateTemplate().get(Userinfo.class, username);
即:
@Override
public Userinfo findUserinfoByName(String username) throws Exception {
Userinfo userinfo =(Userinfo)this.getHibernateTemplate().get(Userinfo.class, username);
return userinfo;
}
就是那个语句,通过Hibernate取出来的数据类型都是String,但是Userinfo.java有
Integer id;
String username;
String password;
String role;
知道
Userinfo userinfo =(Userinfo)this.getHibernateTemplate().get(Userinfo.class, username);
期待的class类型为Integer:Expected: class java.lang.Integer
但是却得了String类型:got class java.lang.String
我接触这个时间不长,请问有什么方法可以解决这个问题呢?
问题解决了,PS一下吧,供参考
Userinfo userinfo =(Userinfo)this.getHibernateTemplate().get(Userinfo.class, username);
这个语句就错在get哪里,Hibernate一般是以Id查询,就是username哪里是Integer类型。如果想按照username查询,那么就修改成如下的:
String hql = "select userinfo from Userinfo userinfo where userinfo.username='"+username+"'";
List list =this.getHibernateTemplate().find(hql);
if(list.size()==0){//判断是否有查询结果
return null;
}else{
Userinfo userinfo=(Userinfo) list.get(0); //返回查询结果
return userinfo;
} 展开
2个回答
展开全部
没人说hibernate查出来的都是String型的吧,你在配置文件中配置一下类型咯,又或是你数据库里面的id本来存储的就是String型的数据,可能是Integer不兼容得啊,不会有中文或者非数字的东东吧
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询