Hibernate错误记录
Hibernate version:5.2.12 idea :2017.3.3
在hibernate5.2的学习中发现很多方法都被废弃了,而且都是从5.2开始废弃的,这就让我只能从官方文档寻求帮助。
1、用hql查询部分字段,并且把他们放入对象中时:
session.createQuery("select NEW Results (courseName,courseScore) from Results") //此代码为实体类的某个字段,类中须有改对应构造
如果此对象是DTO(Data Transfer Object),而不是实体类:
session.createQuery("select new com.sxt.vo.Score(courseName,courseScore) " + "from Results where student.studentName=:name and semesterType=:type order by courseScore desc ",Score.class)
.setParameter("name",name)
.setParameter("type",semesterType);
首先,改DTO要用全包路径,方法要用session.createQuery(String hql,Class<T> clazz)。
2、用Native SQL查询的时候:
session.createNativeQuery("SELECT r.STUDENT_NO as studentNo,r.COURSE_NAME as courseName,r.COURSE_SCORE as courseScore FROM results r")
.setResultTransformer(Transformers.aliasToBean( Score.class ));
对应的Score中 COURSE_SCORE 本来可以对应 Double 不过在这时候类型只能用Number:
public class Score {
private String studentNo;
private String courseName;
private Number courseScore;
public String getStudentNo() {
return studentNo;
}
public void setStudentNo(String studentNo) {
this.studentNo = studentNo;
}
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public Number getCourseScore() {
return courseScore;
}
public void setCourseScore(Number courseScore) {
this.courseScore = courseScore;
}
}
之前自己没在意,可是官方文档用的是Number,如果不用setter方法就会报错。
待续=======>>>>>>>>>