我有以下问题:
SELECT * FROM DOCUMENT WHERE (TYPE, CREATION_DATE) IN(
SELECT TYPE, MAX(CREATION_DATE)
FROM DOCUMENT
WHERE MEMBER_ID = 107374183
AND CREATION_TYPE = 'GENERATED_BY_USER'
GROUP BY TYPE
);
现在我试图用querydsl创建这个sql的映射,但是子查询有问题。由于此子查询返回包含两个列值的元组,我得到错误:
类型中的(Collection)方法 SimpleExpression不适用于参数 (列表
<Tuple
&GT)
这是我到目前为止所尝试的:
QDocument document = QDocument.document;
QDocument d = new QDocument("d");
query()
.from(document)
.where(DOCUMENT.type, DOCUMENT.creationDate.in(
new JPAQuery()
.from(d)
.where(DOCUMENT.member().id.eq(memberId))
.where(DOCUMENT.creationType.eq(DocumentCreationType.GENERATED_BY_USER))
.groupBy(DOCUMENT.type)
.listResults(DOCUMENT.type, d.creationDate.max())
.getResults()
))
.list(DOCUMENT);
任何人都知道如何用querydsl实现这个SQL查询?我是否需要使用加入?