项目使用hibernate 偶尔会出现:HibernateQueryException: Unable to locate appropriate constructor on class
下面罗列一下常见的原因:
1、首先要检查在实体类中是否有构造器,例如:
package com.itlife365.Student
public class Student implements java.io.Serializable {
private String name;
private String sex;
private Integer age;
public Student() {} //无参构造器
public Xiaoqi(String name,String sex, Integer age) { //全参构造器
this.name= name;
this.sex= sex;
this.age= age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
2、如果有上面两个构造器,再检查变量是否匹配,不要写错了
3、然后要注意,变量类型是否匹配,比如,上面的age变量类型为:Integer,写成 int 可能会有问题。所以要注意long和Long,boolean和Boolean等等,最好写成long型
4、查询时有几个参数,你的构造器要对应相应的参数。'
5、与对象对应的映射文件xxx.hbm.xml中配置类型与类的实体类型是否有差异、不同。
6、hibernate中date对应的java的数据类型不能为:java.sql.Date ,只能为java.util.Date