java – Hibernate SQL查询结果映射/转换为对象/类/ Bean

前端之家收集整理的这篇文章主要介绍了java – Hibernate SQL查询结果映射/转换为对象/类/ Bean前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
1 2:select(table.*)/(全部列)OK
  1. String sql = "select t_student.* from t_student";
  2. //String sql = "select t_student.id,t_student.name,... from t_student"; //select all column
  3. sqlQuery query = session.createsqlQuery(sql);
  4. query.addEntity(Student.class);//or query.addEntity("alias",Student.class);
  5. //query.list();[Student@...,Student@...,Student@...]
  6. query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); //or other transformer
  7. query.list(); //[{Student(or alias)=Student@...},{Student=Student@...}]@H_502_3@
  8. 3:选择一些列(不是全部),是错误

  9. String sql = "select t_student.id,t_student.name.t_student.sex from t_student";
  10. sqlQuery query = session.createsqlQuery(sql);
  11. query.addEntity(Student.class);
  12. query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
  13. query.list(); //Exception:invalid column/no column@H_502_3@ 
  14.  

    我想要“3”工作正常,并将结果映射到Student.class.
    喜欢:Student [id =?name =?sex =?(其他字段为空/默认)]
    我不知道这个错误,请帮助我!

解决方法

你可以进一步添加
.setResultTransformer(Transformers.aliasToBean(YOUR_DTO.class));
自动将其映射到您的自定义dto对象,另见 Returning non-managed entities.

例如:

  1. public List<MessageExtDto> getMessagesForProfile2(Long userProfileId) {
  2. Query query = getSession().createsqlQuery(" "
  3. + " select a.*,b.* "
  4. + " from messageVO AS a "
  5. + " INNER JOIN ( SELECT max(id) AS id,count(*) AS count FROM messageVO GROUP BY messageConversation_id) as b ON a.id = b.id "
  6. + " where a.id > 0 "
  7. + " ")
  8. .addScalar("id",new LongType())
  9. .addScalar("message",new StringType())
  10. ......... your mappings
  11. .setResultTransformer(Transformers.aliasToBean(MessageExtDto.class));
  12.  
  13. List<MessageExtDto> list = query.list();
  14. return list;
  15. }@H_502_3@

猜你在找的Java相关文章