将JPA或Hibernate投影查询映射到DTO(数据传输对象)

 政委锤炼_394_774 发布于 2023-01-14 15:45
  • php
  • 在我的DAO层中,我有一个像这样的Find函数

    public List findCategoryWithSentenceNumber(int offset, int maxRec) {
      Criteria crit = getSession().createCriteria(Category.class, "cate");
        crit.createAlias("cate.sentences", "sent");
    
        crit.setProjection(Projections.projectionList().
        add(Projections.property("title"), "title").
        add(Projections.count("sent.id"), "numberOfSentence").
        add(Projections.groupProperty("title"))
      );
    
      crit.setFirstResult(offset);
      crit.setMaxResults(maxRec);
    
      return crit.list();
    }
    

    所以,为了读取数据,我必须使用一个循环(带Iterator)

    List result = categoryDAO.findCategoryWithSentenceNumber(0, 10);
    // List dtoList = new ArrayList<>(); 
    
    for (Iterator it = result.iterator(); it.hasNext(); ) {
      Object[] myResult = (Object[]) it.next();
    
      String  title = (String) myResult[0];
      Long count = (Long) myResult[1];
    
    
      assertEquals("test", title); 
      assertEquals(1, count.intValue()); 
    
      // dQCategoryDTO = new DQCategoryDTO();
      // dQCategoryDTO.setTitle(title);
      // dQCategoryDTO.setNumberOfSentence(count);
      // dtoList.add(dQCategoryDTO);
    
    }
    

    我的问题是:是否有任何api,框架可以轻松地将List resultin 转换为DTO对象列表(例如,DQCategoryDTO)而不使用任何循环,迭代器和调用setter/getter来填充值?

    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有