天天看点

hibernate之原生SQL那点破事entityManger和sqlquery和Session去返回实体对象

hibernate之原生SQL那点破事entityManger和sqlquery和Session去返回实体对象
//sql语句
String str="select id,songname,songid,create_time as createTime,grade_person as gradePerson,grade_person_id as gradePersonId,remark  from tb_grade where songname='"+songName+"' and songid= "+songId+" and grade_person='"+u.getNickName()+"' and grade_person_id="+u.getId();
			

			Session session = entityManager.unwrap(org.hibernate.Session.class);
			SQLQuery query = session.createSQLQuery(str);
            Grade grade = null;


            //方法1
			query.setResultTransformer(Transformers.aliasToBean(Grade.class));
			List<Grade> lists = query.list();
            grade=lists.get(0);

            //方法2
			query.setResultTransformer(Transformers.TO_LIST);
			List<Grade> lists = query.addEntity(Grade.class).list();
			grade=lists.get(0);
           

方法2要注意实体类与数据库字段名不能有相差,特别是数据类型,像博主的实体就有个timestamp类型的,一直在报错,博主本来用的是string类型,后面经大佬指定改成了data类型就能用了!注意!如grade_person在实体类中要么就是跟数据库一样的,要么就是写SQL的时候给个别名gradePerson,否则射不到实体类里

hibernate之原生SQL那点破事entityManger和sqlquery和Session去返回实体对象

继续阅读