嗨这是我的实体
@Entity
@Table(name = "COMMENTS")
public class Comment {
private static final long serialVersionUID = -1606236771730211148L;
@NotNull
private Instant created_On; // immutable
@Id
@NotNull
@Column(updatable = false)
private String uuid;
@NotNull
private DomainReference domainRef; // immutable
}
这是我的表格。
UUID Varchar Unique id
CREATED_ON TIMESTAMP Instant
Encounter Varchar encounter
我需要一个查询,查找每次遇到的最新N行数。因此,如果有3次遭遇,他们每人最多可以有N个数字行。
这是我的原生sql查询
SELECT a.* FROM (
SELECT COMMENTS.UUID ,COMMENTS.DOMAINREF, COMMENTS.CREATED_ON
ROW_Number() OVER(PARTITION BY COMMENTS.DOMAINREF ORDER BY COMMENTS.CREATED_ON DESC) AS rn
FROM COMMENTS WHERE COMMENTS.DOMAINREF IN ('1','2')) a
WHERE a.rn <= 1;
这是我部分转换的JPQL查询。
SELECT a.UUID,a.domainRef,a.CREATED_ON FROM
( SELECT COMMENT.UUID,COMMENT.domainRef,COMMENT.CREATED_ON,
ROW_Number() OVER(PARTITION BY IAW_COMMENT.domainRef ORDER BY COMMENT.CREATED_ON DESC) AS rn
FROM COMMENT WHERE COMMENT.domainRef IN :domainrefs) a
WHERE a.rn <= :maxNum";
此查询将创建名为“a”的表,而不是我的实体。我不确定JPA是否处理内部查询并返回匹配的实体。 我们可以将此查询转换为JPQL查询吗?