java - HQL查询复杂DTO

标签 java hibernate hql dto

我在将 HQL 查询映射到复杂 DTO 时遇到问题。我所说的复杂 DTO 是指组合了另一个 DTO/集合 DTO 的 DTO。我试图找到解决方案,但没有找到任何可以满足我的要求的东西。例如,有一个 DTO(为了简单起见,我省略了属性):

public class Consignment {

  private List<OrderData> orderData;
  private List<AttributesData> attributesData;
  private CostData costData;

  public Consignment(List<OrderData> orderData, List<AttributesData> attributesData, CostData costData) {
    //setting fields
  }

}

HQL 允许通过构造函数将结果集中的列作为参数传递来创建 DTO 对象。是否可以创建子查询或其他查询。或者获取集合中的数据然后将其作为主 DTO 中的参数传递?看来这是不可能的,但也许我错过了一些东西。

否则,唯一的方法就是在单独的 HQL 查询中获取数据,然后将主 DTO 创建为纯 Java 对象。如果有人有其他想法如何做到这一点 - 请分享您的想法。

最佳答案

您可以在同一查询中获取其他数据,如下所示:

FROM Consignment cons JOIN FETCH cons.orderData ord

关于java - HQL查询复杂DTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48508715/

相关文章:

java - 计算2个数组之间的百分比并输出一个新数组

hibernate - 使用 hibernate 删除多对一

java - SQL 查询执行时间比使用 Hibernate SQL Query 的预期时间长

java - 如何在控制台中使用 Java 创建键绑定(bind)?

Java 方法似乎花费了很多我无法解释的时间

java - hql 查询将数据保留在具有多对一关系的表中

grails - HQL按子级列表中的最大项目顺序

java - 加载与自定义查询的关联

java - 为使用 MySQL 和 SQLServer 的项目创建一个 uberjar

java - 如何使用hibernate ehcache缓存列表