簡體   English   中英

盡管具有正確的 DTO,但無法使用請求的結果類型為具有多個返回的查詢創建 TypedQuery

[英]Cannot create TypedQuery for query with more than one return using requested result type, despite having correct DTO

我已經完成了關於這個主題的其他類似問題,發現我的設置是正確的(至少證實了其他人過去的建議)。

我確實有一個專用的 AllRecordsDTO 用於此查詢,它確實具有成功映射查詢結果的所有必要字段。

AllRecordsDTO.java:

@NoArgsConstructor
@AllArgsConstructor
@ToString
public class AllRecordsDTO {

    @Getter
    @Setter
    private String recordName;

    @Getter
    @Setter
    private String recordTypeName;

    @Getter
    @Setter
    private String statusName;

    @Getter
    @Setter
    private String createdByUserId;

    @Getter
    @Setter
    private String createdDateTime;

    @Getter
    @Setter
    private String lastChangedByUserId;

    @Getter
    @Setter
    private String lastChangedDateTime;

}   

allRecordsQuery查詢

    select r.recordName,
       rt.recordTypeName,
       s.name,
       usi.userId,
       r.createdDateTime,
       usi1.userId,
       r.lastChangedDateTime
from Record r
         left join Section s on s.id = r.statusId
         left join UniqueSecurityIdentifier usi on usi.id = r.createdByUserId
         left join RecordType rt on rt.id = r.recordTypeId
         left join UniqueSecurityIdentifier usi1 on usi1.id = r.lastChangedByUserId

引發異常的行:

Query<AllRecordsDTO> createdQuery = statelessSession.createQuery(allRecordsQuery, AllRecordssDTO.class);

上面查詢中使用的所有 Entity 字段都是 String(即使是上述實體中的日期字段也是 String)。

我不確定可能出了什么問題。

JPA 無法實現您所嘗試的。

您必須使用構造函數表達式。

select NEW <packagename>.AllRecordsDTO(r.recordName,
       rt.recordTypeName,
       s.name,
       usi.userId,
       r.createdDateTime,
       usi1.userId,
       r.lastChangedDateTime)
from Record r
         left join Section s on s.id = r.statusId
         left join UniqueSecurityIdentifier usi on usi.id = r.createdByUserId
         left join RecordType rt on rt.id = r.recordTypeId
         left join UniqueSecurityIdentifier usi1 on usi1.id = r.lastChangedByUserId

另請查看 Hibernate 文檔: https ://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#hql-select-clause

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM