将SQL查询的结果映射到DTO对象(具有内部列表)

时间:2018-09-18 14:40:34

标签: java hibernate

我有以下SQL查询

SELECT
  customer.CUSTOMER_NUMBER customerNumber,
  contractDetail.START_DATE campaignStartDate,
  contractDetail.END_DATE  campaignEndDate,
  contractDetailCommitment.END_DATE  commitmentEndDate,
  contractDetail.CONTRACT_DETAIL_STATUS statusCode,
  baseOffer.NAME campaignName,
  property.CODE propertyCode,
  DECODE(property.TYPE, 'LOV', propertyListChoice.CODE, assetPropertyValue.PROPERTY_VALUE) propertyValue
FROM .............

查询结构并不重要,它返回像这样的数据

enter image description here

因此,仅在两个字段中使用不同的值:propertyCode和propertyValue。我想将此查询的结果映射到以下dto对象:

@Data
public class ContractInfoDTO {
    private String customerNumber;
    private String campaignStartDate;
    private String campaignEndDate;
    private String campaignName;
    private String statusCode;
    private List<Property> properties;
}

是否可以自动执行此操作?还是唯一的解决方案是编写自定义ResultTransformer并一一处理所有三行?

1 个答案:

答案 0 :(得分:0)

例如,您可以使用PDFAnnotation.color将查询结果映射到DTO中

JPA

但是首先,您需要将SELECT new com.company.MyDTO(p.someField, p.someField2...) 查询转换为SQL查询。