报错:org.hibernate.TypeMismatchException: Provided id of the wrong type for class …
一、报错情景:在Dao中使用hibernateTemplate从数据库查询一条数据,函数为:
public User findByUsername(String username) {
return this.hibernateTemplate.get(User.class, username);
}
我是想通过实体User对应表中的字段username获取到某条User记录。
二、错误修正:
public List<User> findByUsername(String username) {
List<User> users = this.hibernateTemplate.find("from User as u where u.username=?", username);
return users;
}
修改后用sql语句查询查询这些User记录。
三、报错原因:
hibernateTemplate.get(User.class, username);
这种查询方式的username必须是对应表的主键。而我的数据表里,参数username并非主键,导致的类型不匹配异常。
换一种方法:hibernateTemplate.find(“from User as u where u.username=?”, username);即可