具有 oracle 数据库的 JPQL 查询

JPQL query with having oracle db

我正在使用 jpql jpa eclipselink 以下查询不起作用:

SELECT c FROM TableA c WHERE c.forumId = :forumId AND c.isDefault = true HAVING MAX (c.validFrom)

我得到的错误 "The expression is not a valid conditional expression"

带有 GROUP BY 表达式的 HAVING 子句 only works

The HAVING clause allows for the results of a GROUP BY to be filtered.

您的问题是:

i want o get max validFrom how can i make expression ot of this

但是您可以在没有 GROUP BYHAVING 的情况下进行查询来执行您想要的操作:

select c from TableA c WHERE c.validFrom = (
    SELECT MAX(c2.validFrom) 
    FROM TableA c2  
    WHERE c2.Id = c.Id AND c.forumId = :forumId AND c.isDefault = true
)

如果您想使用 GROUP BYHAVING,您可以这样做:

SELECT c FROM TableA c WHERE c.validFROM = (
    SELECT MAX(validFROM) 
        FROM TableA 
        WHERE forumId = :forumId AND isDefault = true
        GROUP BY validFROM
        HAVING validFROM=c.validFROM
)