我在将 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/