加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:27:28 所属栏目:Java 来源:网络整理
导读:1 2:select(table.*)/(全部列)OK String sql = "select t_student.* from t_student";//String sql = "select t_student.id,t_student.name,... from t_student"; //select all columnSQLQuery query = session.createSQLQuery(sql);query.addEntity(Studen
1 2:select(table.*)/(全部列)OK
String sql = "select t_student.* from t_student";
//String sql = "select t_student.id,t_student.name,... from t_student"; //select all column
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Student.class);//or query.addEntity("alias",Student.class);
//query.list();[Student@...,Student@...,Student@...]
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); //or other transformer
query.list(); //[{Student(or alias)=Student@...},{Student=Student@...}]

3:选择一些列(不是全部),是错误

String sql = "select t_student.id,t_student.name.t_student.sex from t_student";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Student.class);
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
query.list(); //Exception:invalid column/no column

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

解决方法

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

例如:

public List<MessageExtDto> getMessagesForProfile2(Long userProfileId) {
    Query query = getSession().createSQLQuery("  "
            + " select a.*,b.* "
            + " from messageVO AS a "
            + " INNER JOIN ( SELECT max(id) AS id,count(*) AS count FROM messageVO GROUP BY messageConversation_id) as b ON a.id = b.id "
            + " where a.id > 0 "
            + " ")
            .addScalar("id",new LongType())
            .addScalar("message",new StringType())
            ......... your mappings
            .setResultTransformer(Transformers.aliasToBean(MessageExtDto.class));

    List<MessageExtDto> list = query.list();
    return list;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读