如何将内部本机sql转换为JPQL

时间:2014-04-18 17:16:55

标签: java hibernate jpa hql jpql

嗨这是我的实体

@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查询吗?

0 个答案:

没有答案