![](/img/trans.png)
[英]Cannot create TypedQuery for query with more than one return using requested result type
[英]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.