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

 

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

转载于:https://www.cnblogs.com/Ericjin/p/8386600.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值