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方法就会报错。

 

待续=======>>>>>>>>>

posted @ 2018-01-30 18:54  Eric_Jin  阅读(121)  评论(0编辑  收藏  举报