Java JPA命名查询

Java JPA命名查询,java,sql,jpa,Java,Sql,Jpa,嘿,我是JPA新手,对SQL也相当陌生,我需要编写一个slection查询 我需要: “选择金额超过所有美元付款平均值的所有付款” 我有一个JPA实体: @Id @GeneratedValue(strategy = GenerationType.TABLE) private Long id; private String account; private double amount; private String currency; 我试过: @NamedQuery(name="payByUS

嘿,我是JPA新手,对SQL也相当陌生,我需要编写一个slection查询

我需要:

“选择金额超过所有美元付款平均值的所有付款”

我有一个JPA实体:

@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long id;
private String account;
private double amount;
private String currency;
我试过:

@NamedQuery(name="payByUSD" , query="SELECT x FROM Payment x WHERE x.amount > (SELECT AVG(x.amount)from Payment)")
但我得到了以下错误:

- The FROM clause must defined at least one identification variable declaration.
- The right expression is missing from the arithmetic expression.
谁能给我指出正确的方向。

使用

SELECT x FROM Payment x 
WHERE x.amount > (SELECT AVG(p.amount) from Payment p)
您的子查询是

SELECT AVG(x.amount) from Payment

,并且未定义
x

AVG(amount)
而不是
AVG(Payment)
。好的,我将其更改为x.amount,但我仍然有以下错误:-FROM子句必须定义至少一个标识变量声明。-算术表达式中缺少正确的表达式。即从内部SELECT中;和x一样。我们在JPA查询中处理对象,而不是SQL。